簡體   English   中英

如何在 kube.netes 集群中的單個 pod 上運行 quartz 任務?

[英]How to run quartz task on single pod in kubernetes cluster?

我有一個 Spring MVC 項目,其中石英任務當前綁定到 mysql 表中的虛擬機,並且基於這些映射,我們在相應的服務器上執行任務。

例如:
任務 1:admin-3002
任務 2:admin-4001

現在我們已將此應用程序移至 kube.netes 集群中,但由於 kube.netes 中的主機名不是 static,因此每個任務都在所有可用的 pod 上執行。

任何人都可以建議這個問題的最佳解決方案。 一致性哈希是實現這一目標的好解決方案嗎?

我們目前正在運行單個 pod 以避免在所有 pod 上運行任務,但需要找到更好的方法來解決此問題。

最簡單的方法是在 MySQL 數據庫中創建一個鎖表,並將作業名稱作為唯一標識符。

當作業開始時,嘗試向該表寫入一條記錄。

當你的工作已經有記錄時,就停止處理你的工作。

當沒有鎖創建並提交鎖時,處理作業並在最后刪除鎖。

一個很好的解決方案是領導者選舉,可能使用 kube api。不太干凈但可能同樣成功的是使用 StatefulSet 並僅在帶有-0后綴的 pod 上執行某些邏輯,因為 sts pod 按順序編號,始終從 0

暫無
暫無

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

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