多线程与分区之间的Spring批处理差异
我无法理解
Spring批处理中的多线程和分区之间的区别.实现当然是不同的:在分区中,您需要准备分区然后处理它.我想知道有什么区别,当瓶颈是物品处理器时,哪一种是更有效的处理方式.
解决方法
TL; DR;
当瓶颈在处理器中时,这两种方法都不是有用的.通过让多个项目同时通过处理器,您将看到一些好处,但是当您在I / O绑定的进程中使用时,您指出的两个选项都会获得全部好处. AsyncItemProcessor / AsyncItemWriter可能是更好的选择. Spring Batch Scalability概述 >多线程步骤 每个人都有自己的利弊.让我们来看看每个: 多线程步骤 平行步骤 分区 关于分区的一个重要注意事项是主站和从站之间的唯一通信是数据的描述而不是数据本身.例如,主设备可以告诉slave1处理记录1-100,slave2处理记录101-200等.主设备不发送实际数据,只发送从设备获取它应该处理的数据所需的信息. .因此,数据必须是从属进程的本地数据,并且主服务器可以位于任何位置. 远程分块 分区和远程分块之间的重要区别在于,远程分块不是通过线路进行描述,而是通过线路发送实际数据.因此,不是单个数据包说过程记录1-100,远程分块将发送实际记录1-100.这可能会对步骤的I / O配置文件产生很大影响,但如果处理器足够瓶颈,这可能很有用. AsyncItemProcessor / AsyncItemWriter 由于数据流经此选项的性质,不支持某些侦听器场景(因为我们在ItemWriter内部之前不知道ItemProcessor调用的结果)但总的来说,它可以提供一个有用的工具来并行化ItemProcessor单个JVM中的逻辑,而不会牺牲可重启性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |