kubernetes上可扩展的弹簧批处理作业

时间:2017-09-14 08:23:51

标签: java kubernetes spring-batch spring-cloud

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

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

2)我假设将有主要主设备和基于负载配置的不同从属设备。这是对的吗?

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

1 个答案:

答案 0 :(得分:1)

我使用Spring Boot with Spring Batch和Spring Cloud Task来做类似于你想做的事情。也许它会帮助你。

它的工作方式是这样的:我有一个管理器应用程序,使用我的主应用程序在Kubernetes上部署pod。主应用程序执行一些工作,然后启动远程分区,使用“worker”部署其他几个pod。

试着回答你的问题:

1)您可以创建具有Spring Batch作业的应用程序的docker镜像。我们称之为Master应用程序。 部署主应用程序的应用程序可以使用spring cloud deployer kubernetes中的TaskLauncher或AppDeployer

2)正确。在这种情况下,您可以使用远程分区。每个分区都是另一个带有Job的docker镜像。这将是你的工人。 可以找到远程分区的示例here

3)在我的情况下,我使用春季批次并设法做我需要的一切。我现在唯一的问题是使用Upscalling和Downscaling我的集群。由于我的工作人员没有状态,因此在从群集中删除实例时遇到了一些问题。如果您不需要升级或缩减群集,那么您就可以了。