亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Curator如何實現基于zookeeper leader選舉

發布時間:2021-11-12 18:30:03 來源:億速云 閱讀:196 作者:柒染 欄目:大數據

Curator如何實現基于zookeeper leader選舉,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

一,基本介紹

Curator Framework是一個針對zookeeper做的搞層次的API,極大地簡化了zookeeper的使用。它基于zookeeper構建了很多功能,處理復雜的鏈接管理,重試操作。下面是它的一些特點:

1,自動連接管理。

A),存在的潛在錯誤情況,需要ZooKeeper客戶端創建連接和/或重試操作。Curator 自動和透明(主要)處理這些情況。

B),監視NodeDataChanged事件,并根據需要調用updateServerList()。

C),Watches 會被Curator recipes自動移除。

2,簡潔的API

A),提供現代簡潔的接口

B),簡化了zookeeper原生的方法,事件等。

3,實現了很多功能

A),Leader選舉

B),共享鎖

C),隊列

D),Barriers

E),Counters

F),Caches

G),Nodes

本文主要是講解leader選舉。

現在分布式系統,基本架構模型架構是master/slaves,

二,leader選舉

分布式系統中,一般都是master/slaves結構,為了容災一般都是希望啟動多個master,一個Leader,若干Followers,Leader宕機有Followers選舉一個再做Leader。之所以,多個Master之間需要選舉出Leader,實際上是為了保證數據的強一致性。

Zookeeper就是我們做Leader選舉和配置下發的好的一種框架。

CuratorFramework

該類實例是線程安全的,一個應用程序最好公用一個。可以通過CuratorFrameworkFactory創建實例。

Leader選舉的主要類,兩個構造

public LeaderLatch(CuratorFramework client,  String latchPath)Parameters:  client - the client    latchPath - the path for this leadership grouppublic LeaderLatch(CuratorFramework client,  String latchPath,  String id)Parameters:  client - the client    latchPath - the path for this leadership groupid - participant ID
構建了LeaderLatch對象后,需要對象調用start方法啟動,我們然后就可以通過使用
   
     
   
   
   public boolean hasLeadership()
      
    
    Return true if leadership is currently held by this instance
來判斷當前實例是否是Leader。
本文采取的Leader選舉的方案是spark的Master HA采用的方案<  Spark源碼之Standalone模式下master持久化引擎講解>。也即是實現LeaderLatchListener進而通過它來監聽動作master變化。
1,maven依賴
<properties>  <curator.version>3.2.1</curator.version></properties><dependency>  <groupId>org.apache.curator</groupId>  <artifactId>curator-framework</artifactId>  <version>${curator.version}</version></dependency>
<!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes -->  <dependency>    <groupId>org.apache.curator</groupId>    <artifactId>curator-recipes</artifactId>    <version>${curator.version}</version>    <exclusions>      <exclusion>        <groupId>org.apache.zookeeper</groupId>        <artifactId>zookeeper</artifactId>      </exclusion>    </exclusions>  </dependency>

2,LeaderLatchListenerImpl

public class LeaderLatchListenerImpl   implements LeaderLatchListener {
 @Override  public void isLeader() {    // TODO Auto-generated method stub    System.out.println("master");  }
 @Override  public void notLeader() {    // TODO Auto-generated method stub    System.out.println("slave");  }}

3,LeaderLatchListener

public class LeaderLatchMain {  private static final String PATH = "/examples/leader";  public static void main(String[] args) throws Exception {    CuratorFramework client = CuratorFrameworkFactory.newClient("106.75.13.87:2181", new ExponentialBackoffRetry(1000, 3));    client.start();    LeaderLatch leaderLatch = new LeaderLatch(client, PATH,args[0]);    leaderLatch.addListener(new LeaderLatchListenerImpl());
   try {      leaderLatch.start();      Thread.sleep(10000);      System.out.println(leaderLatch.getLeader());      Thread.sleep(Integer.MAX_VALUE);    } catch (Exception e) {      // TODO Auto-generated catch block      e.printStackTrace();      leaderLatch.close();      client.close();    }
 }}
三,總結
本demo中participant ID是啟動的時候當參數傳遞進去。
啟動指令:  
java -jar LeaderLatchMain.jar 1java -jar LeaderLatchMain.jar 2

第一次啟動的時候leader

Curator如何實現基于zookeeper leader選舉

 殺死Leader后

Curator如何實現基于zookeeper leader選舉

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

运城市| 阿克苏市| 鄂托克前旗| 漯河市| 锡林浩特市| 曲松县| 和田市| 嘉荫县| 元朗区| 西充县| 岳池县| 蓬莱市| 清河县| 方城县| 安塞县| 孙吴县| 巨鹿县| 上思县| 淮安市| 墨江| 鄯善县| 京山县| 白水县| 昭通市| 磴口县| 佛教| 罗定市| 白沙| 会泽县| 曲靖市| 马山县| 驻马店市| 永安市| 浦江县| 游戏| 屯门区| 晋宁县| 盐源县| 株洲县| 靖边县| 视频|