本文介紹了如果Kubernetes上存在多個(gè)Pod,則在Spring中從單個(gè)Pod運(yùn)行調(diào)度的Cron方法的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我將在Kubernetes上為我的Spring應(yīng)用程序從單Pod(docker圖像)遷移到多Pod以進(jìn)行負(fù)載處理。但我面臨著一個(gè)問題,因?yàn)槲业膽?yīng)用程序中有一個(gè)cron調(diào)度程序方法,它每天在特定時(shí)間運(yùn)行。如果我部署多個(gè)Pod,它們會(huì)同時(shí)運(yùn)行,因此多個(gè)條目會(huì)保存到我的數(shù)據(jù)庫中,但我只想要一個(gè)Pod來執(zhí)行該功能。
我曾考慮生成Java UUID,并在函數(shù)開始在每個(gè)Pod上執(zhí)行時(shí)將其保存在數(shù)據(jù)庫中。然后在相同的函數(shù)中,設(shè)置一個(gè)休眠計(jì)時(shí)器,比方說,5秒,并比較來自每個(gè)Pod中數(shù)據(jù)庫的UUID。更新數(shù)據(jù)庫中最新值的Pod將匹配該值,并將提前執(zhí)行該方法。
這是一個(gè)好方法嗎?如果不是,請(qǐng)?zhí)峁┛梢越鉀Q此問題的建議。
jdbc
您可以將Quartz調(diào)度程序與推薦答案存儲(chǔ)一起使用。這將自動(dòng)滿足您的要求。
簡(jiǎn)而言之:負(fù)載平衡是自動(dòng)進(jìn)行的,集群中的每個(gè)節(jié)點(diǎn)都會(huì)盡可能快地啟動(dòng)作業(yè)。當(dāng)觸發(fā)器的觸發(fā)時(shí)間發(fā)生時(shí),第一個(gè)獲取它的節(jié)點(diǎn)(通過在它上設(shè)置鎖)是將觸發(fā)它的節(jié)點(diǎn)。";
詳情請(qǐng)參考官方鏈接-http://www.quartz-scheduler.org/documentation/quartz-2.3.0/configuration/ConfigJDBCJobStoreClustering.html
這篇關(guān)于如果Kubernetes上存在多個(gè)Pod,則在Spring中從單個(gè)Pod運(yùn)行調(diào)度的Cron方法的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,