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

Posted

技术标签:

【中文标题】Spring批处理远程分块和远程分区之间的区别【英文标题】:Difference between spring batch remote chunking and remote partitioning 【发布时间】:2013-12-17 20:41:16 【问题描述】:

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

我无法理解 Spring Batch 中远程分块和远程分区之间的区别。谁能解释一下?

【问题讨论】:

是的,谢谢。我会确保我以后会这样做。 ontheserverside.com/blog/2014/07/23/… 【参考方案1】:

远程分区

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

远程分区注意事项:

输入和输出对于从站是本地的。例如,如果输入是一个文件,那么从属设备需要访问该文件。 从站需要访问 JobRepository。从站是完全定义的 Spring Batch 步骤,因此它们需要 JobRepository 访问权限。

远程分块

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

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

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

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

【讨论】:

谢谢迈克尔米内拉 我们可以使用 REST 调用代替 JMS 在主从之间进行通信吗? 对于远程分区,是的,您可以使用 REST 调用进行通信。 @Michael Minella 你能提供远程分区的主从之间的 REST 通信示例吗? 为什么slave不能做I/O?即master向slave发送一批数据,slave进行一些处理,然后将结果插入到db中。

以上是关于Spring批处理远程分块和远程分区之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

当spring批处理远程分块工作者应用程序启动时不要运行IntegrationFlow

最佳 Spring 批量扩展策略

Spring Batch 分区处理程序错误

springbatch和springboot的区别

在春季批处理部署程序分区处理程序中定期获取正在运行的工作节点的状态

Spring Batch 作业状态未在数据库中更新