gpt4 book ai didi

java - Spring batch JDBCPagingItemReader、ThreadPoolTask​​Executor 和 OpenShift 中的多个 pod

转载 作者:搜寻专家 更新时间:2023-11-01 03:45:45 25 4
gpt4 key购买 nike

我们有一个带有 block 处理的 Spring 批处理应用程序,它从数据库中读取记录,处理它们并调用服务/执行一些插入/更新数据库中的一些表作为编写器的一部分。

JDBCPagingItemReader 已被使用,因为当 saveState 为 false 时它是线程安全的。已设置排序键,因此线程不会相互交叉。此外,隔离级别 ISOLATION_READ_COMMITTED 已用于 Oracle 数据源和 Spring 批处理的 JobRepository 配置。

使用 ThreadPoolTask​​Executor 的多线程目前在单个实例中运行良好。

我们最终应该在 OpenShift 中部署这个 Spring Boot 应用程序,应用程序将在多个 PODS 中运行,即应用程序的多个实例都从同一个表中读取。

有知识的人可以让我知道在多个 pod(实例)中使用上述组合是否会出现任何问题,或者是否会出现必须处理的并发问题。

非常感谢在此场景中的任何最佳实践。

感谢您的宝贵时间。

最佳答案

您可以对表进行分区并将每个分区分配给一个 pod。然后,每个分区由一个多线程作业处理。所以这里有两个并行度:跨 pod(多个 JVM)和每个 pod 内(多个线程)。

Could someone who has the knowledge, let me know if there would be any problem using the above combination in multiple pods ( instances ) or if there would be concurrency issues which have to be dealt with .

如果数据集正确分区并且分区之间没有重叠,就不会有并发问题。

关于java - Spring batch JDBCPagingItemReader、ThreadPoolTask​​Executor 和 OpenShift 中的多个 pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56949161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com