弹簧批远程分块和远程分区的区别

2022-09-03 03:56:33

弹簧批远程分块和远程分区有什么区别?

我无法理解春季批处理中的远程分块和远程分区之间的区别。任何人都可以解释一下吗?


答案 1

远程分区

分区是一种主/从步骤配置,允许并行处理数据分区。每个分区都通过一些元数据进行描述。例如,如果您正在处理数据库表,则分区 1 可能是 id 0-100,分区 2 可能是 101-200,依此类推。对于 Spring Batch,主步骤使用分区程序生成包含每个分区的元数据的执行上下文。这些执行上下文被分发到从属步骤,以便由分区处理程序进行处理(对于远程分区,通常使用 MessageChannelPartitionHandler)。从站执行其步骤并返回结果状态,以便主站进行聚合。

有关远程分区的注意事项:

  • 输入和输出是从站的本地输入和输出。例如,如果输入是一个文件,则从属服务器需要访问该文件。
  • 从属需要访问工作存储库。从站是完全定义的弹簧批处理步骤,因此它们需要作业存储库访问权限。

远程分块

远程分块类似于远程分区,因为它是主/从配置。然而,使用远程分块,数据由主站读取,并通过线路发送到从站进行处理。处理完成后,ItemProcessor 的结果将返回到主节点进行写入。

关于远程分块的注意事项:

  • 所有 I/O 均由主设备完成。
  • 从属服务器仅处理处理,因此不需要 JobRepository 访问。
  • 远程分块比远程分区更密集 I/O,因为实际数据是通过网络发送的,而不是描述它的元数据。

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


答案 2

推荐