簡體   English   中英

Java 集群環境下的批處理作業

[英]Java Batch job in cluster environment

我們有一個包含 2 個 JBOSS 節點的集群。 我們有一個批處理作業,它將所有用戶詳細信息從活動目錄加載到數據庫。 該作業每天運行。 它之前在非集群環境中運行,因此我們將其設計為 singleton。 現在我們有一個集群環境,我不知道實現相同結果的最佳方法是什么。 我希望批處理作業每天只運行一次。 我們使用 spring 和 hibernate,我查看了 Spring 批次。 對於我的問題,我無法得到任何簡明的答案。

如果您在集群環境中實施了批處理,有人可以告訴我嗎? 在這種情況下,最好的解決方案是什么?

我們通過 MQ 在外部觸發和啟動作業來實現這一點(啟動作業的 http 請求也可以)。 調度程序將一條消息放入隊列,即使我們有“n”個節點在監聽隊列,一個節點也會接收到消息並根據其內容啟動作業。 您也可以使用 HTTP 來執行此操作。

真正的“解決方案”是“外部”安排批處理作業,而不是通過內部 cron 觸發器。 實際的啟動機制是次要的。

還考慮具有以下特點的https://github.com/willschipp/spring-batch-cluster

  • 批處理作業存儲庫的后寫
  • 集群中批處理的 HA(執行作業的自動停止和故障轉移)

通常,有時將批處理作業與事務系統外部化/隔離是一個好主意,這樣它們就不會干擾可用性或性能。 話雖如此,如果有充分的理由將批處理作業嵌入到集群應用程序中(簡單性、代碼重用等),那么除了已經提到的解決方案之外, ShedLock是一個不錯的選擇。

不管它的價值如何,請注意一篇關於集群環境中的批處理作業的博客文章。

暫無
暫無

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

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