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

时间:2013-12-02 07:49:03

标签: java spring spring-batch

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

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

1 个答案:

答案 0 :(得分:37)

远程分区

分区是主/从步骤配置,允许并行处理数据分区。通过一些元数据描述每个分区。例如,如果您正在处理数据库表,则分区1可能为0-100,分区2为101-200等。对于Spring Batch,主步骤使用Partitioner生成包含元数据的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=CYTj5YT7CZU