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)

相关推荐

  • 怎么用Java实现Android地理信息系统经纬度与度分秒互转

    技术怎么用Java实现Android地理信息系统经纬度与度分秒互转本篇内容介绍了“怎么用Java实现Android地理信息系统经纬度与度分秒互转”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小

    攻略 2021年11月15日
  • 如何解决Sqlserver表统计信息丢失问题

    技术如何解决Sqlserver表统计信息丢失问题本篇文章为大家展示了如何解决Sqlserver表统计信息丢失问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。从链接服务器查询远程

    攻略 2021年11月29日
  • 西汉建立时间,东汉和西汉,哪个更强大

    技术西汉建立时间,东汉和西汉,哪个更强大在中国历史上,一直有着“强汉盛唐”的说法,西汉曾有“明犯我强汉者,虽远必诛!”、“凡日月所照,江河所至,皆为汉土”的豪言壮语。东汉也有“光武中兴”、“明章之治”的开明盛世。西汉和东

    生活 2021年10月28日
  • 手机牌子,打算买个手机,什么牌子好呢

    技术手机牌子,打算买个手机,什么牌子好呢感谢您的阅读!【价格2000-3000手机牌子,什么品牌的手机是可以去考虑的呢】我们在购买手机的时候一定会考虑到价格,而价格因素一定会影响我们对于手机的选择。那么在2000~300

    生活 2021年10月31日
  • 数组扁平化js(js实现数组扁平化输出)

    技术js怎样实现数组的扁平化js怎样实现数组的扁平化,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。数组扁平化的方式什么是数组扁平化?数组扁平化:指将一个

    攻略 2021年12月13日
  • 比较级和最高级,英语比较级和最高级是什么

    技术比较级和最高级,英语比较级和最高级是什么原发布者:刘继勇 英语比较级最高级
    形容词和副词比较级比较级和最高级、最高级
    1.规则形式:一般说来,单音节词及少数双音节词在后加-er/-est来构成比较级和最高级;其他

    生活 2021年10月27日