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)

相关推荐

  • hbase学习 rowKey的设计-4

    技术hbase学习 rowKey的设计-4 hbase学习 rowKey的设计-4hbase学习 rowKey的设计-4访问hbase table中的行,只有三种方式:
    1 通过单个row key访问

    礼包 2021年12月22日
  • 正确写SQL的方法有哪些

    技术正确写SQL的方法有哪些这篇文章主要介绍“正确写SQL的方法有哪些”,在日常操作中,相信很多人在正确写SQL的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”正确写SQL的方法

    攻略 2021年10月23日
  • Python大神利用正则表达式教你搞定京东商品信息的示例分析

    技术Python大神利用正则表达式教你搞定京东商品信息的示例分析Python大神利用正则表达式教你搞定京东商品信息的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能

    攻略 2021年10月25日
  • python查询字典最快的方法(python字典查找算法)

    技术Python字典查找性能的示例分析这期内容当中小编将会给大家带来有关Python字典查找性能的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。timeit.repeattim

    攻略 2021年12月23日
  • 网站建设中常见的安全漏洞有哪些

    技术网站建设中常见的安全漏洞有哪些这篇文章主要为大家展示了“网站建设中常见的安全漏洞有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“网站建设中常见的安全漏洞有哪些”这篇文

    攻略 2021年11月19日
  • 如何用sikuli实现微信自动抢红包

    技术如何用sikuli实现微信自动抢红包本篇文章给大家分享的是有关如何用sikuli实现微信自动抢红包,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在工作中

    攻略 2021年11月15日