使现有的Spring Batch Application在多个节点上运行

Sai*_*Sai 7 java spring scalability spring-batch

我们现有Spring Batch Application,我们希望它可以在多个节点上运行.

Spring Batch的scalabilty文档涉及代码更改和配置更改.

我只是想知道这是否可以通过配置更改来实现(添加新类并在配置中连接它很好但只是想避免对现有类的代码更改).

非常感谢您的帮助.

Mic*_*lla 5

这真的取决于您的情况。具体来说,为什么要在多个节点上运行?您要克服的瓶颈是什么?Spring Batch开箱即用地在多个节点之间进行扩展的两种典型场景是远程组块和远程分区。两者都是主/从配置,但是每个都有不同的用例。

当步骤中的处理器成为瓶颈时,将使用远程分块。在这种情况下,主节点读取输入,并通过Spring Integration通道将其发送到远程节点进行处理。处理完项目后,结果将返回给母版进行写入。在这种情况下,读写是在本地完成的。尽管这有助于并行化处理,但由于每个项目都是通过电线发送的(因此需要保证交付,例如JMS),因此会造成I / O损失。

远程分区是另一种情况。在这种情况下,主机会为每个从机生成要处理的输入的描述,并且仅通过电线发送该描述。例如,如果您正在处理数据库中的记录,则主服务器可能会向每个从服务器发送一系列行ID(1-100、101-200等)。读写发生在从站本地,不需要保证传送(尽管在某些情况下很有用)。

这两个选项都可以使用最少(或没有)新类来完成,具体取决于您的用例。在几个不同的地方可以查找有关这些功能的信息:

  1. Spring Batch Integration Github存储库-Spring Batch Integration是支持上述用例的项目。您可以在此处了解更多信息:https : //github.com/spring-projects/spring-batch-admin/tree/master/spring-batch-integration
  2. 我的远程分区示例-这篇演讲遍历了远程分区,并提供了一个在CloudFoundry上运行的可行示例(当前仅在CF v1上有效,但几天后将进行CF2更新)。配置几乎相同,只是Rabbit的连接池不同:https : //github.com/mminella/Spring-Batch-Talk-2.0此演示文稿的视频可以在YouTube上找到:http:// www .youtube.com / watch?v = CYTj5YT7CZU
  3. Gunnar Hillert关于Spring Batch和Spring Integration的演示:在SpringOne2GX 2013上进行了演示,并包含许多示例:https : //github.com/ghillert/spring-batch-integration-sample

在任何这些情况下,远程分块都应使用零个新类来完成。远程分区通常需要您实现一个新类(分区程序)。


归档时间:

查看次数:

5311 次

最近记录:

12 年,2 月 前