美文网首页分布式系统分布式架构
利用ZooKeepr进行分布式条件下的选主

利用ZooKeepr进行分布式条件下的选主

作者: Jiafu | 来源:发表于2017-09-30 09:01 被阅读38次

ZooKeeper是分布式一致性存储系统。ZooKeeper客户端可以利用ZooKeeepr的特性实现自身的选主。本文介绍一种可行的方法(主要思路):

系统环境:ZooKeeper集群,若干ZooKeeper客户端(这些客户端需要利用ZooKeepr选出一个主节点)

  1. 在ZooKeeper上创建出选主所需要的目录,例如/election,我们称之为选主目录。
  2. 客户端在选主目录下,创建一个临时顺序节点(EPHEMERAL_SEQUENTIAL),节点的内容可以为客户端本身的一些标识(这样其它客户端可以得知集群中其它的客户端节点)。
  3. 收集选主目录下的所有子节点(getChildren),排序,如果本客户端是第一个子节点,那么自身为主。否则,为从。作为从节点,可以监听选主目录,这样当主节点与ZooKeeper断开连接时(临时节点被删除)会得到通知,然后从节点就可以再次尝试选主。

双主问题的避免:
以上的算法,有一定的缺点:假设客户端1选主成功,然后因为某些原因和ZooKeeper断开连接,临时节点被删除,客户端2选主成功,但此时客户端1还认为自己是主(客户端1反映可能不那么及时)。
可以引入租约的机制来解决这个问题。具体地:

  1. 每次选主后成功后,有一定的租约,租约过期前,客户端必须确保续约。(检查一下临时节点是否还存在,并且是排序后最小的那一个。)
  2. 选主成功后,等待一个租约的时间(确保其它的客户端可以退出),然后再次检查是否为主,如果是,那么选主成功,否则继续选主。

具体的实现请读者自行设计。

相关文章

  • 利用ZooKeepr进行分布式条件下的选主

    ZooKeeper是分布式一致性存储系统。ZooKeeper客户端可以利用ZooKeeepr的特性实现自身的选主。...

  • 10. Interview-Dubbo&ZooKeeper

    1 zookeeper原理 / zookeepr分布式一致性原理 ZooKeeper的核心是原子广播,实现原子广播...

  • Selenium+Python远程运行

    Selenium Grid用于进行分布式测试,利用它可以在不同的主机上建立主节点(hub)和分支节点(node)。...

  • 「翻译」Leader 选举,为什么我应该关心?

    前言:最近在关注分布式系统的选举算法,想了解下 ElasticSearch 是如何选主的,以及使用何种选主算法。发...

  • 快速排序

    思想 确定主元素,利用主元素进行数组划分,小于主元素的元素在主元素左边,大于主元素的在右边,利用递归排序。这里用到...

  • Zookeeper可视化工具

    zkui 简介 zkui它提供了一个管理界面,可以针对zookeepr的节点值进行CRUD操作,同时也提供了安全认...

  • 《光合酵素》——产品简介

    产品概述 《光合酵素》是一类能够在无光或光线较弱的条件下,能够进行固氮作用,在黑暗厌氧条件下,经丙酮酸代谢系统利用...

  • eureka 为什么选用AP,为什么不需要选举算法

    在分布式领域中像zokeerper,etcd,这些应用都需要选主算法来选定主服务器,为什么eureka却不需要呢。...

  • How it works(20) Geotrellis是如何在S

    1. 引入 我们会使用Geotrellis自然是因为它能利用spark进行高效的分布式计算,而分布式计算无论在数据...

  • 分布式基础

    一、 分布式基本概念介绍 利用物理架构形成多个自治的处理元素,不共享主内存,但是通过发送消息合作 2. 分布式的作...

网友评论

    本文标题:利用ZooKeepr进行分布式条件下的选主

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