Curator如何实现基于zookeeper leader选举

技术Curator如何实现基于zookeeper leader选举Curator如何实现基于zookeeper leader选举,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的

馆长是如何实现基于动物园管理员领导的选举的,很多新手都不太清楚。为了帮助大家解决这个问题,下面小编就详细讲解一下。需要的人可以从中学习,希望你能有所收获。

一,基本介绍

馆长框架是一个针对动物园管理员的分层API,大大简化了动物园管理员的使用。它基于zookeeper构建了许多功能,处理复杂的链接管理和重试操作。以下是它的一些特性:

1、自动连接管理。

a)、存在潜在的错误情况,需要ZooKeeper客户端创建连接和/或重试操作。策展人自动透明地处理这些情况(主要是)。

b)、监视NodeDataChanged事件,并根据需要调用updateServerList()。

C),手表将被馆长食谱自动移除。

2、简洁的API

a)、提供现代简洁的界面。

b),这简化了动物园管理员的本地方法和事件。

3.已经实现了许多功能。

一)、领导人选举

b)、共享锁

c)、队列

障碍

计数器

缓存

节点

本文主要讲解领导人选举。

目前,分布式系统的基本架构模型是主/从,

二,leader选举

在分布式系统中,一般是主从结构。为了从灾难中恢复,一般希望启动多个主,一个首领和几个随从。如果领袖下台了,追随者会选出一个作为领袖。因此,有必要在多个主数据中选出一个领导者,实际上是为了确保数据的强一致性。

动物园管理员是一个很好的领导选举和配置框架。

CuratorFramework

这个类实例是线程安全的,一个应用程序共享一个更好。您可以通过CuratorFrameworkFactory创建实例。

领导选举的主要类别,两种结构

public leader latch(curatoframeworkclient,StringlatchPath)参数3360 client-the clientlatchpath-theforthisleandshippinggroupublic leader latch(curatoframeworkclient,StringlatchPath,Stringid)参数3360 client-the clientlatchpath-theforthisleandshippinggroupid-participantID

构建完LeaderLatch对象后,我们需要该对象调用start方法来启动,然后我们可以使用

publicbooleanhasLeadership()

returntruifreadershipiscurrentheldbythisinstance

确定当前实例是否为引线。本文采用的领袖选举方案是星火的HA大师采用的方案。

解释火花源代码独立模式下的主持久性引擎。也就是说,实现了LeaderLatchListener来监控动作主的变化。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选举

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/86838.html

(0)

相关推荐

  • Tomcat的Logging内部实现方式是什么

    技术Tomcat的Logging内部实现方式是什么今天就跟大家聊聊有关Tomcat的Logging内部实现方式是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

    攻略 2021年12月9日
  • ebit,ebit变动率公式推导

    技术ebit,ebit变动率公式推导定义计算公式为DOL=息税前利润变动率/产销量变动率=(△EBIT/EBIT)/(△Q/Q),△EBIT是息税前利润变动额,△Q为产销量变动值ebit。公式的推导:经营杠杆系数=(销售

    生活 2021年10月23日
  • babyletsgo女生英文歌,奔跑吧第一季第四期插曲

    技术babyletsgo女生英文歌,奔跑吧第一季第四期插曲奔跑吧兄弟第4期插曲如下babyletsgo女生英文歌:1、angelababy叫权烈踢毽子插曲 David Campbell《ducant take my ey

    生活 2021年10月22日
  • Java坑爹的功能有哪些

    技术Java坑爹的功能有哪些本篇内容介绍了“Java坑爹的功能有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、s

    攻略 2021年11月2日
  • HIVE如何统计每个地区最热门的TOP3产品?

    技术HIVE如何统计各个区域下最热门的TOP3的商品小编给大家分享一下HIVE如何统计各个区域下最热门的TOP3的商品,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!环境: hadoop-2

    攻略 2021年12月16日
  • golang 如何识别文本格式(golang读取txt文件一次读取一行)

    技术Golang怎么读取单行超长的文本这篇文章主要介绍“Golang怎么读取单行超长的文本”,在日常操作中,相信很多人在Golang怎么读取单行超长的文本问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望

    攻略 2021年12月22日