一.ZAB协议是什么
ZAB协议是为分布式协调服务zookeeper专门设计的一种支持崩溃恢复的原子广播协议.
ZAB协议包括两种基本的模式:崩溃恢复和消息广播.
当整个zookeeper集群刚刚启动或者leader服务器宕机.重启或者网络故障导致不存在过半的服务器与leader的服务器保持正常的通信时,所有服务器进入崩溃恢复模式,首先 选举产生新的leader服务器,然后集群follower服务器开始与新的leader服务器进行数据同步,当集群中超过半数的机器与该leader服务器完成数据同步之后,退出恢复模式进行消息广播模式,leader服务器开始接收客户端的事务请求,并进行事务请求处理
二.四种类型的数据节点Znode
1.持久节点:
只要不是手动删除,节点就会一直存在zookeeper中
2.临时节点:
生命周期与客户端会话绑定,一旦客户端失效(客户端与zookpeer连接断开不一定会话失效),那么这个客户端创建的所有临时节点都会被移除
3.持久顺序节点
基本特性同持久节点,只是增加了顺序属性,节点名后边会追加一个由父节点 维护的自增整型数据
4.临时顺序节点
基本特性同临时节点,增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。
三.服务器角色
Leader:
可以接收和处理事务请求,也是事务请求的唯一调度和处理者,保证集群事务处理的顺序性
集群内部各服务的调度者
Follower:
处理客户端的非事务请求,转发事务请求给leader服务器
参与leader选举投票
observer:
处理客户端的非事务请求,转发事务请求给leader服务器
不参与任何形式的投票
四.zookeeper下的server工作状态
服务器具有四种状态,分别是looking,following,leading,observing
LOOKING:寻找Leader状态。当服务器处于该状态时,它会认为当前集群中没有Leader,因此需要进入Leader选举状态。
FOLLOWING:跟随者状态。表明当前服务器角色是Follower。
LEADING:领导者状态。表明当前服务器角色是Leader。
OBSERVING:观察者状态。表明当前服务器角色是Observer。