定時任務分佈式任務實現方案

定時任務的執行在分佈式系統中很常見的一個問題,若是多臺機器同時執行相同的定時任務,業務複雜則可能出現災難性的後果。
Zookeeper開源客戶端Curator,使用Curator的leader選舉功能能夠實現
Curator提供了兩種選舉方案:Leader Latch和Leader Election。
(1)Leader Latch:隨機從候選着中選出一臺做爲leader,選中以後除非調用close()釋放leadship,不然其餘的後選擇沒法成爲leader。
(2)Leader Election:經過LeaderSelectorListener能夠對領導權進行控制,在適當的時候釋放領導權,這樣每一個節點都有可能得到領導權。而LeaderLatch則一直持有leadership,除非調用close方法,不然它不會釋放領導權。
咱們這裏用的是Leader Election。
1.Maven依賴apache

<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
    <version>2.10.0</version>
  </dependency>
  <dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>2.10.0</version>
  </dependency>

2.代碼
clipboard.png
clipboard.png
clipboard.png
clipboard.png
測試執行方法
clipboard.png分佈式

Curator提供了兩種方法來實現Leader選舉,不單單用在定時任務上,其餘場景也能夠使用。測試

相關文章
相關標籤/搜索