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