Spring Batch和Pivotal Cloud Foundry

Mur*_*li 4 spring-batch

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

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

Mic*_*lla 8

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

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清理.考虑到这一点...

批处理作业是否可以根据批处理作业处理的数量自动缩放云中的从属节点?

使用Spring Batch的分区功能时,有两个关键组件.的PartitionerPartitionHandler.该Partitioner负责理解数据,以及如何可以分割.该PartitionHandler负责理解织物在其中分区分发到从站.

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

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

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

上面的场景中的"网格大小"参数配置如何?

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

结论

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