真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Curator如何實(shí)現(xiàn)基于zookeeperleader選舉

Curator如何實(shí)現(xiàn)基于zookeeper leader選舉,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

仁壽網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,仁壽網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為仁壽千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的仁壽做網(wǎng)站的公司定做!

一,基本介紹

Curator Framework是一個(gè)針對(duì)zookeeper做的搞層次的API,極大地簡(jiǎn)化了zookeeper的使用。它基于zookeeper構(gòu)建了很多功能,處理復(fù)雜的鏈接管理,重試操作。下面是它的一些特點(diǎn):

1,自動(dòng)連接管理。

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

B),監(jiān)視NodeDataChanged事件,并根據(jù)需要調(diào)用updateServerList()。

C),Watches 會(huì)被Curator recipes自動(dòng)移除。

2,簡(jiǎn)潔的API

A),提供現(xiàn)代簡(jiǎn)潔的接口

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

3,實(shí)現(xiàn)了很多功能

A),Leader選舉

B),共享鎖

C),隊(duì)列

D),Barriers

E),Counters

F),Caches

G),Nodes

本文主要是講解leader選舉。

現(xiàn)在分布式系統(tǒng),基本架構(gòu)模型架構(gòu)是master/slaves,

二,leader選舉

分布式系統(tǒng)中,一般都是master/slaves結(jié)構(gòu),為了容災(zāi)一般都是希望啟動(dòng)多個(gè)master,一個(gè)Leader,若干Followers,Leader宕機(jī)有Followers選舉一個(gè)再做Leader。之所以,多個(gè)Master之間需要選舉出Leader,實(shí)際上是為了保證數(shù)據(jù)的強(qiáng)一致性。

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

CuratorFramework

該類實(shí)例是線程安全的,一個(gè)應(yīng)用程序最好公用一個(gè)??梢酝ㄟ^(guò)CuratorFrameworkFactory創(chuàng)建實(shí)例。

Leader選舉的主要類,兩個(gè)構(gòu)造

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
構(gòu)建了LeaderLatch對(duì)象后,需要對(duì)象調(diào)用start方法啟動(dòng),我們?nèi)缓缶涂梢酝ㄟ^(guò)使用
   
     
   
   
   public boolean hasLeadership()
      
    
    Return true if leadership is currently held by this instance
來(lái)判斷當(dāng)前實(shí)例是否是Leader。
本文采取的Leader選舉的方案是spark的Master HA采用的方案<  Spark源碼之Standalone模式下master持久化引擎講解>。也即是實(shí)現(xiàn)LeaderLatchListener進(jìn)而通過(guò)它來(lái)監(jiān)聽(tīng)動(dòng)作master變化。
1,maven依賴
  3.2.1  org.apache.curator  curator-framework  ${curator.version}
     org.apache.curator    curator-recipes    ${curator.version}                  org.apache.zookeeper        zookeeper            

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();    }
 }}
三,總結(jié)
本demo中participant ID是啟動(dòng)的時(shí)候當(dāng)參數(shù)傳遞進(jìn)去。
啟動(dòng)指令:  
java -jar LeaderLatchMain.jar 1java -jar LeaderLatchMain.jar 2

第一次啟動(dòng)的時(shí)候leader

Curator如何實(shí)現(xiàn)基于zookeeper leader選舉

 殺死Leader后

Curator如何實(shí)現(xiàn)基于zookeeper leader選舉

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。


新聞名稱:Curator如何實(shí)現(xiàn)基于zookeeperleader選舉
文章地址:http://weahome.cn/article/pgcdjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部