A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1 Zookeeper Watch
Watch 说的是 Zookeeper 的监听机制。一个 Watch 事件是一个一次性的触发
器,当被设置了 Watch 的数据发生了改变的时候,则服务器将这个改变发送给设置了 Watch 的客户端,以便通知它们。
改变有很多种方式,如:节点创建,节点删除,节点改变,子节点改变等。
1.1. Watch 机制特点
一次性触发   
数据发生改变时,一个 watcherevent 会被发送到 client,但是 client 只
会收到一次这样的信息。
Watcher event 异步发送   
watcher 的通知事件从 server发送到 client 是异步的。
数据监视
Zookeeper有数据监视和子数据监视
getdata()、 exists() 设置数据监视
getchildren()设置了子节点监视
注册watcher  
getData、exists、getChildren
触发watcher  
create、delete、setData
1.2. Watch 的事件类型
Zookeeper的 watch 实际上要处理两类事件
1.2.1 连接状态事件(type=None,path=null)
这类事件不需要注册,也不需要我们连续触发,我们只要处理就行了。
None  在客户端与 Zookeeper 集群中的服务器断开连接的时候,客户端会
收到这个事件。
1.2.2节点事件
节点的建立,删除,数据的修改。
NodeCreated  Znode 创建事件
NodeDeleted  Znode 删除事件
NodeDataChanged  Znode 数据内容更新事件。其实本质上该事件只关注
dataVersion版本号,但是只要调用了更新接口 dataVersion 就会有变更。
NodeChildrenChanged   Znode 子节点改变事件,只关注子节点的个数变
更,子节点内容有变更是不会通知的。
2 Zookeeper 选举机制
zookeeper默认的算法是 FastLeaderElection,采用投票数大于半数则胜出
的逻辑。
2.1.概念
服务器 ID
比如有三台服务器,编号分别是 1,2,3。
编号越大在选择算法中的权重越大。
选举状态
LOOKING,竞选状态。
FOLLOWING,随从状态,同步leader 状态,参与投票。
OBSERVING,观察状态,同步 leader 状态,不参与投票。
LEADING,领导者状态。
数据 ID
服务器中存放的最新数据 version。
值越大说明数据越新,在选举算法中数据越新权重越大。
逻辑时钟
也叫投票的次数,同一轮投票过程中的逻辑时钟值是相同的。每投完一次票这个数据就会增加,然后与接收到的其它服务器返回的投票信息中的数值相比,根据不同的值做出不同的判断。
2.2.全新集群选举
假设目前有 5 台服务器,每台服务器均没有数据,它们的编号分别是1,2,3,4,5,按编号依次启动,它们的选择举过程如下:
 服务器 1 启动,给自己投票,然后发投票信息,由于其它机器还没有启动所以它收不到反馈信息,服务器 1 的状态一直属于 Looking。
 服务器 2 启动,给自己投票,同时与之前启动的服务器 1 交换结果,由于服务器 2 的编号大所以服务器 2 胜出,但此时投票数没有大于半数,所以两个服务器的状态依然是 LOOKING。
 服务器 3 启动,给自己投票,同时与之前启动的服务器 1,2 交换信息,由于服务器 3 的编号最大所以服务器 3 胜出,此时投票数正好大于半数,所以服务器 3 成为领导者,服务器 1,2 成为小弟。
 服务器 4 启动,给自己投票,同时与之前启动的服务器 1,2,3 交换信息,尽管服务器 4 的编号大,但之前服务器 3 已经胜出,所以服务器 4 只能成为小弟。
 服务器 5 启动,后面的逻辑同服务器 4 成为小弟。
2.3.非全新集群选举
对于运行正常的 zookeeper 集群,中途有机器 down掉,需要重新选举时,选举过程就需要加入数据 ID、服务器 ID 和逻辑时钟。
数据 ID:数据新的 version就大,数据每次更新都会更新 version。
服务器 ID:就是我们配置的 myid中的值,每个机器一个。
逻辑时钟:这个值从 0 开始递增,每次选举对应一个值。 如果在同一次选举中,这个值是一致的。
这样选举的标准就变成:
  1、逻辑时钟小的选举结果被忽略,重新投票;
  2、统一逻辑时钟后,数据 id 大的胜出;
  3、数据 id 相同的情况下,服务器 id大的胜出;
根据这个规则选出 leader。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马