gpt4 book ai didi

java - Spring 批处理 :How it works in distributed environemnt

转载 作者:行者123 更新时间:2023-11-30 11:19:36 24 4
gpt4 key购买 nike

我打算在分布式环境中使用 spring batch。做一些批处理任务。


现在,当我说分布式环境时,我的意思是我有一组带有前端 Web 服务的框。负载均衡器分发,然后将作业分发到盒子。


现在我有几个问题:
1)如果作业中途终止(比如盒子重新启动)会发生什么情况。spring batch 会自动重新启 Action 业吗?还是我需要编写自己的自定义观察器,然后调用 spring batch api 来重新启 Action 业?
2)如果spring back有这种自动重启。2个盒子可以同时选择并执行同一个作业吗?是这样吗?

最佳答案

Spring Batch 有四种策略来处理可伸缩性,请参阅 here更多详情:

  • 多线程Step(单进程)
  • 并行步骤(单进程)
  • 远程分块步骤(多进程)
  • 对步骤进行分区(单进程或多进程)

你的是一个多进程场景,所以你可以在步骤远程分块和步骤分区之间进行选择,具体取决于读取部分与进程/写入相比的成本。

但在这两种情况下,都不能有两个实例进行重复工作,所有这些都是为了避免这种情况而设计的。这只有在不小心在不同机器上部署两个单一进程机制之一时才会发生,这会导致您提到的问题。

重启逻辑也是可以预见的,看这里Restartability部分了解更多详情。

重新启动后,作业将继续读取、处理和写入下一个数据 block 。如果读取器/处理器/写入器被配置/写入到任务被分块,那么它将全部开箱即用。

通常它涉及在写入部分中包含将该 block 中的读取项目标记为“已处理”。

关于java - Spring 批处理 :How it works in distributed environemnt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23154417/

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