Spring批量远程分块和远程分区之间的区别

spring批量远程分块和远程分区有什么区别?

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

远程分区

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

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

  • 输入和输出是从站的本地输出。 例如,如果输入是文件,则从属设备需要访问该文件。
  • Slaves需要访问JobRepository。 Slaves是完全定义的Spring Batch步骤,因此需要JobRepository访问。

远程分块

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

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

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

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