2017-09-14 126 views
2

我正在使用弹簧批处理开发批量应用程序ETL。我的ETL过程从一个基于分页的REST API获取数据并将其加载到Google Big-query。我想在kubernetes集群中部署这个批处理应用程序,并希望利用pod可伸缩性功能。我了解春季批处理支持水平和垂直缩放。我有几个问题: -kubernetes上的可扩展弹簧批处理作业

1)如何在kubernetes上部署此ETL应用程序,以便使用远程分块/远程分区按需创建Pod?

2)我假设会有主要的主控制器和基于负载的不同的从属控制器。这是对的吗?

3)有一个kubernetes批处理API也可用。使用kubernetes批处理API或使用Spring Cloud功能。这个选项是否更好?

+0

海你有没有得到这个问题的解决方案 –

回答

1

我已经使用Spring Boot,Spring Batch和Spring Cloud Task来执行类似于您想要的操作。也许它会帮助你。

它的工作方式是这样的:我有一个管理器应用程序,用我的主应用程序在Kubernetes上部署Pod。主应用程序执行一些工作,然后开始使用“工作人员”部署其他几个吊舱的远程分区。

试图回答您的问题:

1)您可以创建一个具有Spring Batch的工作的应用的一个码头工人的形象。 我们称之为主应用程序。 将部署主应用程序的应用程序可以使用来自spring cloud deployer kubernetes的TaskLauncher或AppDeployer

2)正确。在这种情况下,您可以使用远程分区。每个分区都将是另一个具有Job的Docker镜像。这将是你的工人。 远程分区的一个例子可以发现here

3)在我的情况下,我使用了spring批处理,并设法做我需要的一切。我现在遇到的唯一问题是升级和降级群集。由于我的工作人员不具有状态,因此当从集群中删除实例时遇到了一些问题。如果你不需要升级或缩减你的群集,那么你很好。

相关问题