【发布时间】:2013-08-13 11:22:09
【问题描述】:
我是 Spring Batch 的新手,刚刚开始进行 POC,以证明 Spring Batch 能够在一小时内处理 100 万条记录。然而,该架构要求我们也展示水平可扩展性。
我已经阅读了分区和远程分块策略。两者都对我有意义。两者之间的本质区别在于远程分块需要一个持久的消息队列,因为实际写入数据库或文件是从主服务器发生的。在分区中不需要持久消息队列,因为写入发生在从站。
然而,我完全迷失的是,如何确保这两种并行处理变体的结果以正确的顺序写出? .
我们以分区为例。据我了解,如果将处理 1000 条记录的特定步骤分成 10 个并行步骤执行,每个执行都有自己的 Reader、Processor 和 Writer,那么其中一个执行很容易在另一个之前完成。结果是其中一个步骤执行的 ItemWriter 可以在处理记录 300-300 的结果写入同一个表之前将处理记录 300-400 的结果写入表,因为该特定步骤执行可能滞后。
这意味着现在我有一个输出表,其中包含所有处理结果,但它们的排序顺序不正确。可能需要进一步的顺序处理,只需将它们恢复到从 1 到 1000 的正确排序顺序即可。
我很难理解,如何确保正确排序的输出,同时通过 Spring Batch 中描述的远程处理策略水平扩展系统。
这两本书我都读过。 http://www.manning.com/templier/ 和 http://www.apress.com/9781430234524 但这些书中也没有任何内容可以回答我的问题。
【问题讨论】:
标签: java spring batch-processing spring-batch