Spring Batch 远程分块和远程分区的区别

问题描述 投票:0回答:2

Spring Batch 远程分块和远程分区有什么区别?

我无法理解 Spring Batch 中远程分块和远程分区之间的区别。有人可以解释一下吗?

java spring spring-batch
2个回答
45
投票

远程分区

分区是一种主/工作步骤配置,允许并行处理数据分区。每个分区都通过一些元数据进行描述。例如,如果您正在处理数据库表,分区 1 的 ID 可能为 0-100,分区 2 的 ID 可能为 101-200,等等。对于 Spring Batch,主步骤使用 Partitioner 生成 ExecutionContext,其中包含每个分区的元数据分割。这些 ExecutionContext 被分发到工作步骤,由 PartitionHandler 进行处理(对于远程分区,通常使用 MessageChannelPartitionHandler)。工作人员执行他们的步骤并返回结果状态以供主站聚合。

远程分区注意事项:

  • 输入和输出对于工人来说是本地的。例如,如果输入是文件,则工作人员需要访问该文件。
  • 工作人员需要访问 JobRepository。 Workers 是完全定义的 Spring Batch 步骤,因此他们需要 JobRepository 访问权限。

远程分块

远程分块与远程分区类似,它是主/工作配置。然而,通过远程分块,数据由主设备读取并通过线路发送到工作设备进行处理。一旦处理完成,ItemProcessor的结果就会返回给master进行写入。

远程分块需要注意的事项:

  • 所有I/O均由master完成。
  • 工作人员仅进行处理,因此不需要 JobRepository 访问权限。
  • 远程分块比远程分区的 I/O 密集程度更高,因为实际数据是通过线路发送的,而不是描述它的元数据。

我做了一个关于扩展 Spring Batch 的演讲,并做了一个远程分区演示,您可以在这里观看:http://www.youtube.com/watch?v=CYTj5YT7CZU

社区编辑:在当前文档中,术语“奴隶”已被“工人”取代,答案已被编辑以反映这一点。请注意,一些评论仍然引用旧术语。


0
投票

远程分块

远程分块是一种管理器/工作器方法,允许 Spring Batch 开发人员扩展批处理应用程序。

在远程分块中,Step 处理被拆分到多个进程中,通过一些消息中间件相互通信。

处理和写入由worker完成,而读取由master完成。经理必须读取实际记录,然后通过线路将实际记录传递给工作人员(例如:kafka 主题)。

实际例子

教程: https://www.youtube.com/watch?v=-MFtwajUalg

远程分区

远程分区允许您将工作负载分散到多个 JVM。 Spring Batch 开箱即用地提供基于消息的 PartitionHandler,可用于跨 JVM 扇出处理。

优点:可重新启动。跨 JVM。线程安全

缺点:分区器和工作部署的复杂设置

© www.soinside.com 2019 - 2024. All rights reserved.