Zookeeper-03-集群

已经半夜了,好想马银霜啊

集群中的角色
1.leader:用来写数据,通过选举产生
2.follower:用于读取数据,如果leader挂了,则有投票权,也可能成为leader
3.observer:用于读取数据,没有投票权,也不可能成为leader,也不属于zk中的"半数者",应用场景是当系统业务压力较大的期间(比如电商双11),可以随时增加几个临时的zk节点

何时选举leader?
1.服务器刚启动的时候
2.半数以上的节点无法和leader建立连接

选举方式
首先每个存活的follower都会投自己当leader,如果有多个follower票数相同,则进行第二轮选举,第二轮开始每个follower都会投票比自己id大的follower,依照这个规则,至多进行N轮最终从follower中选出新的leader

同步方式(客户端写入数据的方式)
客户端写到leader,由leader同步给各个follower,但是,第一次写入的时候,客户端不知道谁是leader,所以客户端随便写给一个follower,然后由这个follower委托给leader写入,leader写到本地之后在同步给其他follower,如果过半follower都回复OK(确认消息),则leader告诉他们可以commit,最终数据写入完毕
注:这就是对paxos协议的一个简单且一笔带过的描述,本质是paxos
ZXID:一个64位的整数,每次选举leader,高32位自增1,每次有任何,是任何数据的修改,低32位自增1,所有的zk服务器的ZXID必须相同,如果不相同,则说明数据不一致
笔记:个人认为这个ZXID可以理解成paxos中的轮次

猜你喜欢

转载自blog.csdn.net/u011624903/article/details/113485894