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)

相关推荐

  • 相互独立,三件事相互独立与三件事两两独立

    技术相互独立,三件事相互独立与三件事两两独立一相互独立、描述范围1、两两独立:是这n个事件中任意两个事件之间,如有事件A、B、C,满足P(AC)=P(A)P(C),P(AB)=P(A)P(B),P(CB)=P(C)P(B

    生活 2021年10月27日
  • 怎么理解java图的对象化描述

    技术怎么理解java图的对象化描述这篇文章主要讲解了“怎么理解java图的对象化描述”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解java图的对象化描述”吧!一、

    攻略 2021年11月9日
  • oracle18c新特性有哪些

    技术oracle18c新特性有哪些oracle18c新特性有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Oracle宣布Database 18c已

    攻略 2021年11月12日
  • ENVI 5.3软件安装教程,附带安装包获取方式)

    技术ENVI 5.3软件安装教程,附带安装包获取方式) ENVI 5.3软件安装教程(附带安装包获取方式)ENVI 5.3保姆级安装教程(附带安装包获取方式)
    ENVI(The Environment

    礼包 2021年11月7日
  • 如何在实体框架7中使用阴影属性

    技术Entity Framework 7中的影子属性怎么用这篇文章主要为大家展示了“Entity Framework 7中的影子属性怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并

    攻略 2021年12月16日
  • 怎么使用PostgreSQL的插件pgmetries

    技术怎么使用PostgreSQL的插件pgmetries这篇文章主要介绍“怎么使用PostgreSQL的插件pgmetries”,在日常操作中,相信很多人在怎么使用PostgreSQL的插件pgmetries问题上存在疑

    攻略 2021年11月8日