2016-02-19 46 views
4

我们正在评估Spring Batch框架以取代我们组织中的本土批量框架,并且我们应该能够在Pivotal Cloud Foundry(PCF)中部署批处理。在这一点上,你可以让我们知道您对以下问题的看法:Spring批处理和Pivotal Cloud Foundry

  • 让我们说,如果我们使用远程分区策略来处理大量的记录,可以在云中的批处理作业自动缩放,从属节点基于关于批量作业的处理量?或者我们必须调整适当数量的从节点,并在批处理作业启动之前保持它们到位?
  • 上述场景中的“网格大小”参数配置如何?

回答

7

您在这里有几个问题。但是,在进入它们之前,请让我花一些时间浏览PCF上批处理的位置,然后回答您的问题。

电流CF

的状态作为PCF 1.6,圣地亚哥(CF内的动态运行时)提供了新的原语被称为任务。传统上,运行在CF上的所有应用程序都应该是长时间运行的进程。因此,为了在CF上运行批处理作业,您需要将其打包为长时间运行的进程(通常是Web应用程序),然后部署该进程。如果你想使用远程分区,你需要根据你的需要来部署和扩展slave,但这些都是CF的外部。通过任务,迭戈现在支持短命的流程......也就是当完成时不会重新启动的流程。这意味着你可以将一个批处理作业作为Spring Boot的一个jar包运行,并且一旦完成,CF就不会尝试重新启动它(这是件好事)。 1.6的问题在于暴露任务的API不可用,所以它只是一个内部构造。

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

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

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

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

该方法允许根据分区数量(可配置为最大值)动态启动从站的数量。

我们计划为Spring云数据流执行此项工作,但PartitionHandler应该也适用于该工作流以外的用户。

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

网格大小参数实际上是由Partitioner而不是PartitionHandler使用的,其目的是提示可能有多少员工。在这种情况下,可以使用它来配置要创建的分区数量,但这实际上取决于实现的数量。

结论

这是如何在CF一批工作流程看起来就像一个描述。重要的是要注意,CF 1.7并没有写出这个答案。它计划在2016年第一季度结束,届时这一功能将在不久之后发布。