Spring Batch和Pivotal Cloud Foundry [英] Spring Batch and Pivotal Cloud Foundry
问题描述
我们正在评估Spring Batch框架,以在我们的组织中取代我们自己开发的Batch框架,我们应该能够在Pivotal Cloud Foundry(PCF)中部署该批处理。在这方面,您能告诉我们您对以下问题的看法吗:
- 比方说,如果我们使用远程分区策略来处理大量记录,那么批处理作业是否可以根据批处理作业处理的数量自动扩展云中的Slave节点?或者我们必须扩展适当数量的从属节点,并在批处理作业开始之前将它们保持在适当的位置?
- 上面场景中的"网格大小"参数配置如何?
推荐答案
您在这里有几个问题。但是,在开始讨论它们之前,让我花几分钟时间浏览一下现在PCF上的批处理在哪里,然后再回答您的问题。
CF的当前状态
从PCF1.6开始,Diego(CF中的动态运行时)提供了一个名为Tasks的新原语。传统上,所有在CF上运行的应用程序都应该是长时间运行的进程。正因为如此,为了在CF上运行批处理作业,您需要将其打包为一个长时间运行的进程(通常是Web应用程序),然后进行部署。如果您想使用远程分区,则需要根据您认为合适的方式部署和扩展从分区,但这都是在CF外部进行的。有了任务,Diego现在支持短暂的进程……也就是完成后不会重新启动的进程。这意味着您可以将批处理作业作为Spring Bootüber jar运行,一旦完成,CF就不会尝试重新启动它(这是件好事)。1.6的问题是公开任务的API不可用,因此它只是一个内部构造。在PCF1.7中,发布了一个新的API以公开任务供一般使用。作为v3API的一部分,您可以将自己的应用程序部署为任务。这允许您在知道批处理作业将执行的情况下将其作为任务启动,然后由PCF清理。记住这一点.
批处理作业是否可以根据批处理作业的处理量自动缩放云中的从属节点?
使用Spring Batch的分区功能时,有两个关键组件。Partitioner
和PartitionHandler
。Partitioner
负责了解数据以及如何划分数据。PartitionHandler
负责了解将分区分发到从属服务器的结构。
对于Spring Cloud数据流,我们计划创建一个PartitionHandler
实现,允许用户将从分区作为任务在CF上执行。从本质上说,我们期望的是PartitionHandler
会将从属作为任务启动,一旦它们完成,它们就会被清理。
此方法允许根据分区数动态启动从属分区数(可配置为最大值)。
我们计划对Spring Cloud数据流执行此工作,但是PartitionHandler
也应该对该工作流之外的用户可用。
上面场景中的"网格大小"参数配置如何?
网格大小参数实际上是由Partitioner
而不是PartitionHandler
使用的,其目的是提示可能有多少个工作进程。在本例中,它可以用来配置您想要创建多少个分区,但这实际上取决于Partitioner
实现。
结论
这是对CF上的批处理工作流外观的描述。值得注意的是,在撰写本答案时,CF1.7还没有发布。它计划在2016年第1季度推出,届时,此功能将很快推出。这篇关于Spring Batch和Pivotal Cloud Foundry的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!