【问题标题】:Spring Batch and Pivotal Cloud Foundry [closed]Spring Batch 和 Pivotal Cloud Foundry [关闭]
【发布时间】:2016-02-19 16:34:33
【问题描述】:

我们正在评估 Spring Batch 框架以替换我们组织中的自制批处理框架,我们应该能够在 Pivotal Cloud Foundry (PCF) 中部署批处理。在这方面,您能否告诉我们您对以下问题的看法:

  • 如果我们使用远程分区策略来处理大量记录,批处理作业是否可以根据批处理作业处理的数量自动扩展云中的从节点?或者我们必须扩展适当数量的从节点并在批处理作业开始之前将它们保持在原位?
  • 上述场景中“网格大小”参数如何配置?

【问题讨论】:

    标签: spring-batch


    【解决方案1】:

    您有几个问题。不过,在深入探讨之前,让我花点时间了解一下 PCF 上的批处理现在在哪里,然后回答您的问题。

    CF的当前状态

    从 PCF 1.6 开始,Diego(CF 中的动态运行时)提供了一个名为 Tasks 的新原语。传统上,所有在 CF 上运行的应用程序都应该是长时间运行的进程。因此,为了在 CF 上运行批处理作业,您需要将其打包为一个长时间运行的进程(通常是 Web 应用程序),然后进行部署。如果你想使用远程分区,你需要部署和扩展你认为合适的从属服务器,但这一切都在 CF 之外。借助 Tasks,Diego 现在支持短期流程……也就是完成后不会重新启动的流程。这意味着您可以将批处理作业作为 Spring Boot über jar 运行,一旦完成,CF 将不会尝试重新启动它(这是一件好事)。 1.6 的问题在于,没有公开 Tasks 的 API,因此它只是一个内部构造。

    在 PCF 1.7 中,正在发布一个新的 API,以公开任务以供一般使用。作为 v3 API 的一部分,您将能够将自己的应用程序部署为任务。这允许您将批处理作业作为任务启动,因为它知道它将执行,然后由 PCF 清理。考虑到这一点...

    批处理作业能否根据批处理作业处理的数量自动扩展云中的 Slave 节点?

    使用 Spring Batch 的分区功能时,有两个关键组件。 Partitioner 和 PartitionHandler。 Partitioner 负责了解数据以及如何划分数据。 PartitionHandler 负责了解将分区分配给从属设备的结构。

    对于 Spring Cloud Data Flow,我们计划创建一个PartitionHandler 实现,允许用户在 CF 上执行从属分区作为任务。从本质上讲,我们期望PartitionHandler 会将从属服务器作为任务启动,一旦它们完成,它们就会被清理。

    这种方法允许根据分区数量动态启动从属设备的数量(可配置为最大值)。

    我们计划为 Spring Cloud Data Flow 进行这项工作,但PartitionHandler 也应该可供该工作流之外的用户使用。

    上述场景中的“网格大小”参数如何配置?

    Partitioner 真正使用了网格大小参数,而不是PartitionHandler,它旨在提示可能有多少工作人员。在这种情况下,它可以用于配置您要创建多少个分区,但这实际上取决于Partitioner 的实现。

    结论

    这是对 CF 上的批处理工作流程的描述。重要的是要注意 CF 1.7 在撰写此答案时尚未发布。它计划于 2016 年第一季度推出,届时,此功能将在不久之后推出。

    【讨论】:

      猜你喜欢
      • 2016-10-05
      • 1970-01-01
      • 2018-03-05
      • 2021-02-03
      • 1970-01-01
      • 1970-01-01
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多