首页 > 其他分享 >zookeeper选举机制

zookeeper选举机制

时间:2023-05-11 10:14:00浏览次数:29  
标签:选举 zookeeper 胜出 启动 投票 服务器 机制 id

1.zookeeper选举机制
zookeeper默认算法是FastLeaderElection,采用投票数大于半数则胜出的逻辑
2.概念
2.1)服务器ID
比如有三台服务器,编号分别是1,2,3。编号越大在选择算法中的权重越大。
2.2)选举状态
Looking,竞选状态。
Following,随从状态,同步leader状态,参与投票。
Obeserving,观察状态,同步leader状态,不参与投票。
Leading,领导者状态。
2.3)数据id
服务器存放最新的数据version。
值越大说明数据越新,在选举算法中数据越新权重越大。
2.4)逻辑时钟
也叫投票的次数,同一轮投票过程中的逻辑时钟值是相同的。每投完一次票这个数据就会增加,然后与接收到的其它服务器返回的投票信息中的数值相比,根据不同的值做出不同的判断。
3.全新集群选举
3.1假设有五台服务器,每台服务器均没有数据。它们的编号分别用myid来表示1,2,3,4,5,按照标号依次启动,选举过程如下
1)服务器1启动,给自己投票,然后发投票信息,由于其它机器还没有启动所以收不到反馈信息,服务器1就处于looking状态
2)服务器2启动,给自己投票,同时与之前启动的服务器1交换结果,由于服务器2的编号大所以服务器2胜出,但此时投票数没有大于半数,所以两台服务器的状态依然是Looking状态
3)服务器3启动,给自己投票,同时与之前启动的服务器1,2交换信息,由于服务器3的编号最大所以服务器3胜出,此时的投票正好大于半数,所以服务器3成为leader,前两台成为follower
4)服务器4启动。,给自己投票,同时与之前启动的服务器123交换信息,尽管服务器4的编号大,但是服务器3已经胜出了,所以服务器4只能是follower
5)服务器5启动,给自己投票,同时与之前启动的服务器1234交换信息,尽管服务器5的编号大,但是服务器3已经胜出了,所以服务器5只能是follower
4.非全新集群选举
对于运行正常的zookeeper集群,中途有机器down掉,需要重新选举时,选举过程就需要加入数据id、服务器id和逻辑时钟。
数据id:数据新的version就大,数据每次更新都会更新version。
服务器id:就是我们配置的myid中的值,每个机器一个。
逻辑时钟:这个值从0开始递增,每次选举对应一个值。如果在同一次选举中,这个值是一定的。
这样的选举标准就会变成:
1、逻辑时钟小的选举结果被忽略,重新投票;
2、统一逻辑时钟后,数据id大的胜出;
3、数据id相同的情况下,服务器id大的胜出;
根据这个规则选出leader。

关注我的公众号SpaceObj 领取idea系列激活码

标签:选举,zookeeper,胜出,启动,投票,服务器,机制,id
From: https://www.cnblogs.com/zhanghongrui/p/17390199.html

相关文章

  • IO通信机制
    1.IO通信模型IO指的是input和output网络通信的本质是网络间的数据IO。只要有IO,就会有阻塞或非阻塞的问题,无论这个IO是网络的,还是硬盘的。原因在于程序是运行在系统上的,任何形式的IO操作都需要系统支持。2.BIO(阻塞模式)BIO即BlockingIO,是一种阻塞式的IO。jdk1.4版本之前的......
  • socket机制
    1.概述:Socket,又称为套接字,用于描述IP地址和端口。应用程序通常通过socket向网络发出请求或者应答网络请求。Socket就是网络编程提供的一种机制:通信两端都有socket;网络通信其实就是socket之间的通信;数据在两个socket之间通过io传输。网络编程也称作为socket编程,套接字编程。......
  • Zookeeper中Shell客户端-crud操作
    1.读取节点ls命令:列出zookeeper指定节点下的所有子节点,只能查看指定节点下的第一级的所有子节点;get命令:可以获取zookeeper指定节点的数据内容和属性信息。lspath[watch]getpath[watch]ls2path[watch]2.更新节点setpathdata[version]data就是更新的新内容,version......
  • zookeeper中shell客户端设置watcher
    1.shell客户端设置watcher1.1创建节点监听:createpathwatch1.2设置节点变动监听:getpathwatch1.3通过另一个客户端更改节点数据:setpathwatch1.4此时设置监听的节点收到通知关注我的公众号SpaceObj领取idea系列激活码......
  • Zookeeper中watcher介绍-通知状态事件类型
    1.ZookeeperWatcher简介1.1)提供了分布式数据发布、订阅功能。1.2)引入了watcher机制来实现这种分布式的通知功能(主要触发事件:节点创建、节点删除、节点改变等)。1.3)watcher包括以下三个过程:客户端向服务端注册watcher、服务端事件发生触发watcher、客户端回调watcher得到触发事......
  • zookeeper中Shell客户端Quota命令
    1.quota1.1创建quotacreatepathdata#path表示节点,data表示内容1.2对节点进行限制setquota-n|-bvalpath对节点增加限制。n:表示子节点的最大个数b:表示数据值的最大长度val:子节点最大个数或数据值的最大长度path:节点路径注意:quota是一种非强制性的限制,即创建......
  • Zookeeper_java_API的简介
    1.Zookeeper_java_API的简介1.1)org.apache.zookeeper.ZookeeperZookeeper是在Java客户端主类,负责建立与zookeeper集群的会话,并提供方法进行操作。1.2)org.apache.zookeeper.WatcherWatcher接口表示一个标准的事件处理器,其定义了事件通知相关的逻辑,包含KeeperState和EventType两......
  • 通过构建完整研发管理体系,建立管理机制,让技术组织聚焦目标,高效运转,同时激励团队不断优
    背景  技术管理者(技术总监/经理/CTO)期望通过体系化的管理方式建设,能够在百人,千人以上的团队中有效的构建聚焦目标,自我成长,高效能的研发作战团队,快速拿出成果,支撑业务的快速发展。痛点从小团队人员快速扩张,团队文化稀释,人员效能下降,目标逐渐弱化。各自团队管理方式及......
  • httprunner 4.x学习 - 11.hook 机制
    前言前言httprunner4.x可以支持hook机制,在发送请求前做一些预处理或在请求完成后后置处理setup_hooks:主要用于处理接口的前置的准备工作,也可以对请求request参数签名加密等操作teardown_hooks:主要用于后置清理工作,也可以对返回respone解密等操作测试步骤添加hook在......
  • C++异常和错误处理机制:如何使您的程序更加稳定和可靠
    在C++编程中,异常处理和错误处理机制是非常重要的。它们可以帮助程序员有效地处理运行时错误和异常情况。本文将介绍C++中的异常处理和错误处理机制。什么是异常处理?异常处理是指在程序执行过程中发生异常或错误时,程序能够捕获并处理这些异常或错误的机制。例如,当程序试图访问......