【问题标题】:Scalable spring batch job on kubernetesKubernetes 上的可扩展春季批处理作业
【发布时间】:2018-02-23 03:20:37
【问题描述】:

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

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

2) 我假设会根据负载配置主主 pod 和不同的从属 pod。对吗?

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

【问题讨论】:

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

标签: java kubernetes spring-batch spring-cloud


【解决方案1】:

我已经将 Spring Boot 与 Spring Batch 和 Spring Cloud Task 一起使用来完成与您想要做的类似的事情。也许对你有帮助。

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

尝试回答您的问题:

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

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

3) 就我而言,我使用了 spring batch 并设法完成了我需要的一切。我现在唯一遇到的问题是对集群进行升级和降级。由于我的工作人员没有状态,当从集群中删除实例时我遇到了一些问题。如果您不需要升级或缩小集群,那么您就可以开始了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多