1.软文推荐

2.软文推荐

3.软文推荐

Zookeeper 是一个分布式服务框架,主要是用来解决分布式应用中遇到的一些数据管理问题如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。我们可以简单把 Zookeeper 理解为分布式家庭的大管家,那么管家团队是如何选出Leader的呢?下面为大家详细讲解一下Zookeeper选取机制。

zookeeper节点的4种状态:

LEADING:说明此节点已经是leader节点,处于领导者地位的状态,差不多就是一般集群中的master。但在zookeeper中,只有leader才有写权限,其他节点(FOLLOWING)是没有写权限的,可以读

LOOKING:选举中,正在寻找leader,即将进入leader选举流程中

FOLLOWING:跟随者,表示当前集群中的leader已经选举出来了,主要具备以下几个功能点

? 向leader发送请求(PING消息、REQUEST消息、ACK消息、REVALIDATE消息)

? 接收leader消息并进行处理;

? 接收client发送过来的请求,如果为写请求,会发送给Leader进行投票处理,然后返回client结果。

OBSERVING:OBSERVING和FOLLOWING差不多,但不参加投票和选举,接受leader选举后的结果

选举过程:

假如有以下5台机器server1、server2、server3、server4、server5 图是网上扒的

img

每个server 自身都有一票,在初始化或者server崩溃数过半的时候,每个server都有一个自身的myid(zookeeper配置文件),这里按1、2、3、4、5算

在选举过程中主要是依据zxid和myid来进行轮训server然后比较统计投票

zxid (ZooKeeper Transaction Id,每次请求对应一个唯一的zxid,如果zxid a

选举分为两种情况,初始化和leader挂掉的时候,要进行leader选举,至少需要2台机器,集群机器台数基本是奇数

初始化

当启动初始化集群的时候,server1的myid为1,zxid为0 server2的myid为2,zxid同样是0,以此类推。此种情况下zxid都是为0。先比较zxid,再比较myid

服务器1启动,给自己投票,然后发投票信息,由于其它机器还没有启动所以它收不到反馈信息,服务器1的状态一直属于Looking(选举状态)。
服务器2启动,给自己投票,同时与之前启动的服务器1交换结果,由于服务器2的myid大所以服务器2胜出,但此时投票数没有大于半数,所以两个服务器的状态依然是LOOKING。
服务器3启动,给自己投票,同时与之前启动的服务器1,2交换信息,由于服务器3的myid最大所以服务器3胜出,此时投票数正好大于半数,所以服务器3成为领导者,服务器1,2成为小弟。
服务器4启动,给自己投票,同时与之前启动的服务器1,2,3交换信息,尽管服务器4的myid大,但之前服务器3已经胜出,所以服务器4只能成为小弟。
服务器5启动,后面的逻辑同服务器4成为小弟

当选举机器过半的时候,已经选举出leader后,后面的就跟随已经选出的leader,所以4和5跟随成为leader的server3

所以,在初始化的时候,一般到过半的机器数的时候谁的myid最大一般就是leader

运行期间

按照上述初始化的情况,server3成为了leader,在运行期间处于leader的server3挂了,那么非Observer服务器server1、server2、server4、server5会将自己的节点状态变为LOOKING状态

1、开始进行leader选举。现在选举同样是根据myid和zxid来进行

2、首先每个server都会给自己投一票竞选leader。假设server1的zxid为123,server2的zxid为124,server4的zxid为169,server5的zxid为188

3、同样先是比较zxid再比较,server1、server2、server4比较server4根据优先条件选举为leader。然后server5还是跟随server4,即使server5的zxid最大,但是当选举到server4的时候,机器数已经过半。不再进行选举,跟随已经选举的leader

zookeeper集群为保证数据的一致性所有的操作都是由leader完成,之后再由leader同步给follower。重点就在这儿,zookeeper并不会确保所有节点都同步完数据,只要有大多数节点(即n/2+1)同步成功即可。

咱们假设有一个写操作成功那么现在数据只存在于节点leader,之后leader再同步给其他follower。这时候宕掉3个机器,已经过半的机器无法进行投票选举,剩余2台不足过半,无法选举=无法提供任何服务。再启动一个机器恢复服务。所以宕掉的机器不要过半,过半就会导致无法正常服务。

在leader选举的时候会有30s-120s的过程,在这期间也是无法提供服务的。如果用zookeeper要作为服务发现是个弊端,基本无法忍受,zookeeper本身是一个CP系统,保证数据的一致性,在恢复的时候再提供服务,并没有多好高可用的方案。如果leader发生故障选举时无法提供服务发现对一个大型应用来说可能是致命的。它可以为同在一个分布式系统中的其他服务提供:统一命名服务、配置管理、分布式锁服务、集群管理等功能)是个伟大的开源项目,很成熟

本文来源:www.lxlinux.net/6674.html,若引用不当,请联系修改。

相关文章 8

1

网站优化流程最新资讯(网站优化流程最新资讯内容) 2分钟前

目录:1、网站SEO优化有哪些流程?2、SEO 网站优化的步骤和技巧有哪些?3、SEO网站优化的步骤有哪些?4、个人网站如何做SEO优化?网站SEO优化有...

2

Nginx上游服务器长连接配置 3分钟前

Nginx Upstream连接后端有两种方式:短连接和长连接。Keep-Alive即俗称的长连接,使客户端到服务端建立的连接持续有效,当对服务器发起后续...

4

CentOS中常用的yum命令 6分钟前

yum是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器,基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动...

5

Linux下查看和修改主机名具体方法 7分钟前

Linux系统下如何查看和修改主机名?本篇文章为大家分享一下Linux下查看和修改主机名的方法,有需要的小伙本可以参考一下。 查询主机名:...

6

韩国vps线路(韩国大带宽vps) 9分钟前

目录:1、韩国vps服务器哪家好2、谁来科普一下,香港,俄罗斯,新加坡,日本,韩国的vps3、vps韩国uplus线路好吗4、哪里的韩国vps比较好,...

7

改进你的脚本程序具体方法 10分钟前

你是否曾经查看过某个软件发行方提供的安装用的脚本script程序?为了能够适应不同用户的系统配置,顺利完成安装,这些脚本程序经常包含...

8

来宾云服务器(来宾市联动云) 12分钟前

目录:1、swift和cinder的区别2、如何在服务器直接安装discuz3、腾讯云服务器遇到这种情况怎么办4、服务器和数据库异常用户,安全狗无法防护...