摘要:定時任務的執(zhí)行在分布式系統(tǒng)中很常見的一個問題,如果多臺機器同時執(zhí)行相同的定時任務,業(yè)務復雜則可能出現(xiàn)災難性的后果。開源客戶端,使用的選舉功能可以實現(xiàn)提供了兩種選舉方案和。而則一直持有,除非調用方法,否則它不會釋放領導權。
定時任務的執(zhí)行在分布式系統(tǒng)中很常見的一個問題,如果多臺機器同時執(zhí)行相同的定時任務,業(yè)務復雜則可能出現(xiàn)災難性的后果。
Zookeeper開源客戶端Curator,使用Curator的leader選舉功能可以實現(xiàn)
Curator提供了兩種選舉方案:Leader Latch和Leader Election。
(1)Leader Latch:隨機從候選著中選出一臺作為leader,選中之后除非調用close()釋放leadship,否則其他的后選擇無法成為leader。
(2)Leader Election:通過LeaderSelectorListener可以對領導權進行控制,在適當?shù)臅r候釋放領導權,這樣每個節(jié)點都有可能獲得領導權。而LeaderLatch則一直持有l(wèi)eadership,除非調用close方法,否則它不會釋放領導權。
我們這里用的是Leader Election。
1.Maven依賴
org.apache.curator curator-recipes 2.10.0 org.apache.curator curator-framework 2.10.0
2.代碼
測試執(zhí)行方法
Curator提供了兩種方法來實現(xiàn)Leader選舉,不僅僅用在定時任務上,其他場景也可以使用。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71275.html
摘要:架構消息代理,作為臨時儲存任務的中間媒介,為提供了隊列服務。生產者將任務發(fā)送到,消費者再從獲取任務。如果使用,則有可能發(fā)生突然斷電之類的問題造成突然終止后的數(shù)據丟失等后果。任務調度器,負責調度并觸發(fā)定時周期任務。 架構 showImg(https://segmentfault.com/img/bVbmDXa?w=831&h=413); Broker 消息代理,作為臨時儲存任務的中間媒...
摘要:也是自帶的一個基于線程池設計的定時任務類。其每個調度任務都會分配到線程池中的一個線程執(zhí)行,所以其任務是并發(fā)執(zhí)行的,互不影響。 原創(chuàng)不易,如需轉載,請注明出處https://www.cnblogs.com/baixianlong/p/10659045.html,否則將追究法律責任!!! 一、在JAVA開發(fā)領域,目前可以通過以下幾種方式進行定時任務 1、單機部署模式 Timer:jdk中...
摘要:當觸發(fā)定時任務時,一臺服務的任務進入切面,通過方法為唯一的加鎖,如果當前不存在,將放入緩存,并返回通過設置鎖超時時間,結束后跳出執(zhí)行定時任務方法。 問題描述 將帶有定時任務的項目部署在單臺測試環(huán)境上,完全沒問題。生產上是兩臺集群服務器,項目部署上去發(fā)現(xiàn)定時任務的模塊同時在兩臺機器上各執(zhí)行了一遍,這將會導致其他意外的發(fā)生。 解決方案----redis分布式鎖 使用redis分布式鎖,為定...
閱讀 3197·2021-09-06 15:02
閱讀 2243·2019-08-30 15:48
閱讀 3439·2019-08-29 11:08
閱讀 3281·2019-08-26 13:55
閱讀 2440·2019-08-26 13:35
閱讀 3162·2019-08-26 12:11
閱讀 2598·2019-08-26 11:48
閱讀 881·2019-08-26 11:42