gpt4 book ai didi

java - 使现有的 Spring Batch 应用程序在多个节点上运行

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:21:46 24 4
gpt4 key购买 nike

我们有现有的 Spring Batch 应用程序,我们希望使其可扩展以在多个节点上运行。

Spring Batch 的可扩展性文档涉及代码更改和配置更改。

我只是想知道这是否可以仅通过更改配置来实现(添加新类并将其连接到配置中很好,但只是想避免对现有类进行代码更改)。

非常感谢您的提前帮助。

最佳答案

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

当步骤中的处理器是瓶颈时,使用远程分块。在这种情况下,主节点读取输入并通过 Spring Integration channel 将其发送到远程节点进行处理。处理完项目后,结果将返回给 master 以供写入。在这种情况下,读取和写入是在 master 本地完成的。虽然这有助于并行处理,但它需要 I/O 命中,因为每个项目都通过网络发送(并且需要保证交付,例如 JMS)。

远程分区是另一种情况。在这种情况下,主机生成要为每个从机处理的输入的描述,并且只有该描述通过线路发送。例如,如果您正在处理数据库中的记录,主服务器可能会向每个从服务器发送一系列行 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

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

关于java - 使现有的 Spring Batch 应用程序在多个节点上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18825499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com