Spring Batch 远程分块和远程分区有什么区别?
我无法理解 Spring Batch 中远程分块和远程分区之间的区别。有人可以解释一下吗?
远程分区
分区是一种主/工作步骤配置,允许并行处理数据分区。每个分区都通过一些元数据进行描述。例如,如果您正在处理数据库表,分区 1 的 ID 可能为 0-100,分区 2 的 ID 可能为 101-200,等等。对于 Spring Batch,主步骤使用 Partitioner 生成 ExecutionContext,其中包含每个分区的元数据分割。这些 ExecutionContext 被分发到工作步骤,由 PartitionHandler 进行处理(对于远程分区,通常使用 MessageChannelPartitionHandler)。工作人员执行他们的步骤并返回结果状态以供主站聚合。
远程分区注意事项:
远程分块
远程分块与远程分区类似,它是主/工作配置。然而,通过远程分块,数据由主设备读取并通过线路发送到工作设备进行处理。一旦处理完成,ItemProcessor的结果就会返回给master进行写入。
远程分块需要注意的事项:
我做了一个关于扩展 Spring Batch 的演讲,并做了一个远程分区演示,您可以在这里观看:http://www.youtube.com/watch?v=CYTj5YT7CZU
社区编辑:在当前文档中,术语“奴隶”已被“工人”取代,答案已被编辑以反映这一点。请注意,一些评论仍然引用旧术语。
远程分块
远程分块是一种管理器/工作器方法,允许 Spring Batch 开发人员扩展批处理应用程序。
在远程分块中,Step 处理被拆分到多个进程中,通过一些消息中间件相互通信。
处理和写入由worker完成,而读取由master完成。经理必须读取实际记录,然后通过线路将实际记录传递给工作人员(例如:kafka 主题)。
教程: https://www.youtube.com/watch?v=-MFtwajUalg
远程分区
远程分区允许您将工作负载分散到多个 JVM。 Spring Batch 开箱即用地提供基于消息的 PartitionHandler,可用于跨 JVM 扇出处理。
优点:可重新启动。跨 JVM。线程安全
缺点:分区器和工作部署的复杂设置