在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  Android/ 多個微服務做定時任務,如何做負載均衡

多個微服務做定時任務,如何做負載均衡

部署多個微服務,業(yè)務邏輯都是一樣的,就是做定時任務。在spring cloud中如何均勻的讓每個微服務都做定時任務,互相不沖突

回答
編輯回答
懶豬
  1. 發(fā)延遲消息

  2. 設置互斥鎖,例如給 redis 設置一個 nx 的 key

  3. 采用 zookeeper 的選舉機制做定時任務,springcloud 的話 eureka 應該也會有類似的機制吧

2017年11月8日 22:09
編輯回答
編輯回答
櫻花霓

一個辦法就是用任務隊列,將任務發(fā)布到隊列里,然后讓空閑的微服務自動去領取。這樣就不會有沖突了。

2018年5月7日 21:25
編輯回答
若相惜

不復雜的情況,可以使用數(shù)據(jù)庫來簡單實現(xiàn)。
像mysql有內(nèi)置的程序鎖函數(shù):
get_lock() // 獲取鎖
release_lock() // 釋放鎖

具體的函數(shù)使用可以查看mysql的函數(shù)介紹
使用這種方式來控制分布式任務切換有個注意事項,這個鎖的獲取和釋放是和數(shù)據(jù)庫連接相關,一個連接創(chuàng)建的鎖只能這個連接自己釋放,這就需要在數(shù)據(jù)庫連接池做改動,不過最簡單還是直接原生jdbc獲取數(shù)據(jù)庫連接,不使用連接池來獲取連接,拿到鎖,執(zhí)行該微服務的任務,任務完成后使用該連接釋放鎖。做小數(shù)量分布式任務切換沒問題,大數(shù)量就得考慮復雜的切換框架了……

2018年7月28日 00:30
編輯回答
拼未來

是負載均衡的每個節(jié)點都要運行定時任務,還是要確保有且只有一個節(jié)點執(zhí)行任務?
如果是前者的話,直接VM里單起一條線程就OK了啊

2018年2月12日 22:24