Spring Batch和Pivotal Cloud Foundry [已关闭]

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

  • 让我们说如果我们使用远程分区策略来处理大量记录,批处理作业是否可以根据批处理作业处理的数量自动缩放 Cloud 中的从属节点?或者我们必须缩放适当数量的Slave节点并在批处理作业开始之前将它们保留在原位?

  • 如何在上面的场景中配置"grid size"参数?

回答(1)

2 years ago

你在这里有几个问题 . 但是,在进入它们之前,让我花点时间了解PCF上批处理的位置,然后回答您的问题 .

Current state of CF

从PCF 1.6开始,Diego(CF中的动态运行时)提供了一个名为Tasks的新原语 . 传统上,在CF上运行的所有应用程序都应该是长时间运行的进程 . 因此,为了在CF上运行批处理作业,您需要将其打包为长时间运行的进程(通常是Web应用程序),然后进行部署 . 如果你想使用远程分区,你需要按照你认为合适的方式部署和扩展奴隶,但它只是CF的外部 . 使用Tasks,Diego现在支持短期流程...也就是说,当它们完成时不会重新启动的流程 . 这意味着您可以作为SpringBootüberjar运行批处理作业,一旦完成,CF将不会尝试重新启动它(这是一件好事) . 1.6的问题是API暴露任务不可用,因此它只是一个内部构造 .

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

Can the batch job auto scale Slave nodes in the cloud based on the amount of that the batch job processes?

使用Spring Batch的分区功能时,有两个关键组件 . PartitionerPartitionHandler . Partitioner 负责理解数据以及如何分割数据 . PartitionHandler 负责了解将分区分发给从属服务器的结构 .

对于Spring Cloud Data Flow,我们计划创建一个 PartitionHandler 实现,允许用户将从属分区作为CF上的任务执行 . 从本质上讲,我们所期望的是 PartitionHandler 会将奴隶作为任务启动,一旦完成,他们就会被清理干净 .

此方法允许基于分区数量(可配置为最大值)动态启动从站数量 .

我们计划为Spring Cloud Data Flow做这项工作,但 PartitionHandler 也应该适用于该工作流程之外的用户 .

How does the "grid size" parameter configuration in the scenario above?

网格大小参数实际上由 Partitioner 使用,而不是 PartitionHandler ,旨在暗示可能有多少 Worker . 在这种情况下,它可以用于配置您要创建的分区数,但这实际上取决于 Partitioner 实现 .

Conclusion

这是对CF上的批处理工作流程的外观的描述 . 重要的是要注意CF 1.7在写这个答案时并没有出来 . 它计划在2016年第一季度结束,届时此功能将在不久之后推出 .