簡體   English   中英

Spring批量JDBCPagingItemReader,ThreadPoolTask​​Executor和OpenShift中的多個pod

[英]Spring batch JDBCPagingItemReader, ThreadPoolTaskExecutor and multiple pods in OpenShift

我們有一個帶有塊處理的Spring批處理應用程序,它從DB讀取記錄,處理它們並調用服務/執行一些插入/更新數據庫中的幾個表作為編寫器的一部分。

已使用JDBCPagingItemReader因為當saveState為false時它是線程安全的。 已設置排序鍵,因此線程不會相互交叉。 隔離級別ISOLATION_READ_COMMITTED也用於Spring批處理的oracle數據源和JobRepository配置。

使用ThreadPoolTaskExecutor多個線程目前在單個實例中運行良好。

我們最終應該在OpenShift中部署這個Spring Boot應用程序,其中應用程序將在多個PODS中運行,即應用程序的多個實例都從同一個表中讀取。

有知識的人可以告訴我在多個pod(實例)中使用上述組合是否存在任何問題,或者是否存在必須處理的並發問題。

本場景中的任何最佳實踐都受到高度贊賞。

謝謝你的時間。

您可以對表進行分區並將每個分區分配給一個pod。 然后,每個分區由多線程作業處理。 所以這里有兩種並行度:跨pod(多個JVM)和with-in每個pod(多個線程)。

有知識的人可以告訴我在多個pod(實例)中使用上述組合是否存在任何問題,或者是否存在必須處理的並發問題。

如果數據集正確分區且分區之間沒有重疊,則不會出現並發問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM