Spring Batch - 在设计方法方面需要帮助

时间:2014-08-18 21:20:55

标签: spring spring-batch partitioning

我们需要根据上次运行配置日期将一组表数据从一个数据源合并到另一个数据源。已经实现了弹簧批次,它工作正常,但性能太慢。花了大约18个小时来处理大约500万条记录。 Haven还没有使用任何多线程或者分离蛋白。需要帮助找到合适的设计方法来提高性能。以前这个任务是通过sql loader完成的,它在3个小时内完成。有大约8个表合并到另一个数据源。如果需要任何信息,请告诉我。提前致谢。

1 个答案:

答案 0 :(得分:0)

Spring Batch旨在允许从基本单线程处理到完整的多jvm缩放解决方案的批处理作业的增量增强,每个步骤的配置更改最少。如果不了解您的用例,您采取的方法将取决于您的要求:

  1. 您是否需要可重新启动?如果是这样,那么就省去了基本的多线程步骤,因为大多数读者不支持具有可重启性的多线程处理。
  2. 进程IO是否已绑定?我假设这样做会消除远程分块作为选项。
  3. 如果上述假设是正确的,则会留下分区。您可以在此处详细了解分区与分块:Difference between spring batch remote chunking and remote partitioning

    一旦您选择了分区作为模型,您唯一需要回答的其他问题就是:

    1. 什么是分区策略?分区将要处理的数据的描述从主服务器发送到每个从服务器。您需要确定该描述的内容(在db中,id范围是常见选项)。
    2. 本地还是远程?您是否可以通过使用线程执行从站的单个JVM获得所需的吞吐量,还是需要更多的马力?如果是这样,您将要查看远程分区。