美文网首页
zookeeper实现master选举

zookeeper实现master选举

作者: kevin0016 | 来源:发表于2018-09-18 11:12 被阅读198次

zookeeper其中的一个功能就是实现集群master的选举功能,这篇文章就来实现一下这个master选举功能,并附上相应的demo

首先是应用原理,先上一个原理图

原理图

结构图解释:左侧树状结构为zookeeper集群,右侧为程序服务器。所有的服务器在启动的时候,都会订阅zookeeper中master节点的删除事件,以便在主服务器挂掉的时候进行抢主操作;所有服务器同时会在servers节点下注册一个临时节点(保存自己的基本信息),以便于应用程序读取当前可用的服务器列表。

 选主原理介绍:zookeeper的节点有两种类型,持久节点跟临时节点。临时节点有个特性,就是如果注册这个节点的机器失去连接(通常是宕机),那么这个节点会被zookeeper删除。选主过程就是利用这个特性,在服务器启动的时候,去zookeeper特定的一个目录下注册一个临时节点(这个节点作为master,谁注册了这个节点谁就是master),注册的时候,如果发现该节点已经存在,则说明已经有别的服务器注册了(也就是有别的服务器已经抢主成功),那么当前服务器只能放弃抢主,作为从机存在。同时,抢主失败的当前服务器需要订阅该临时节点的删除事件,以便该节点删除时(也就是注册该节点的服务器宕机了或者网络断了之类的)进行再次抢主操作。从机具体需要去哪里注册服务器列表的临时节点,节点保存什么信息,根据具体的业务不同自行约定。选主的过程,其实就是简单的争抢在zookeeper注册临时节点的操作,谁注册了约定的临时节点,谁就是master。

    其实简单来说就是利用了zookeeper的临时节点特性,服务器心跳宕机之后,节点会自动删除,新master会注册

接下来直接看demo

1、javaApi实现

选举器属性 开启关闭选举 选举的主要逻辑代码 模拟宕机和判断master 注册删除事件 服务器信息对象(简单实现) 测试代码

此处的此时代码,个人觉得不是很好,应该写成那种多线程通过访问选举的过程,多个线程多个zookeeper客户端,同时进行访问,这样更能模拟出真实的运行环境

2、zkclient实现,大部分逻辑代码都是一样的,可以参考javaApi原生代码实现

3、curator实现

由于curator有现成的选举功能,可以直接拿来用

相关文章

  • zookeeper实现master选举

    zookeeper其中的一个功能就是实现集群master的选举功能,这篇文章就来实现一下这个master选举功能,...

  • 利用Zookeeper实现 - Master选举

    原文始发于:利用Zookeeper实现 - Master选举 Zookeeper 是一个高可用的分布式数据管理与协...

  • zookeeper系列

    zookeeper系列(一)zookeeper必知 √zookeeper系列(二)实战master选举 √zo...

  • zookeeper Master选举

    简述 在分布式环境中,常常需要遇到这样一个场景:对于一个复杂的任务,需要从集群中选举一台机器进行处理即可。这种分布...

  • 2018-08-06:05-使用ZKclient实现master

    上一节使用zookeeper实现分布式锁,这节使用ZKClient实现master选举ZKClient使用比zoo...

  • zookeeper总结

    zookeeper的应用案例:Hbase:使用zookeeper进行master选举,服务间协调。Solr:使用z...

  • ZookeeperMasterSelector

    master选举 什么是master选举?为什么需要master选举? 为实现提供7*24的客户服务,我们通常采用...

  • zookeeper leader选举

    zookeeper选举算法 zookeeper有三种算法来实现leader选举:LeaderElection算法A...

  • 使用curator实现选举

    概述 使用zookeeper自己来实现选举还是有点麻烦的(使用zookeeper实现选举),这个时候可以使用cur...

  • Zookeeper1:Zookeeper基本原理

    1.zookeeper选举机制 Zookeeper虽然在配置文件中并没有指定master和slave,但是,zoo...

网友评论

      本文标题:zookeeper实现master选举

      本文链接:https://www.haomeiwen.com/subject/ttiynftx.html