1、什么是ZAB协议
ZAB (Zookeeper Atomic Broadcast)协议是Zookeeper为分布式协调服务专门设计的一种支持容错、崩溃、恢复的原子广播协议,这个协议解决了Zookeeper的崩溃恢复 和主从数据同步 的问题
2、崩溃恢复时的Leader选举
崩溃恢复的关键
Leader建立完后,Leader周期性 地不断向Follower发送心跳 (ping命令,没有内容的socket ) 当Leader崩溃后,Follower发现Socket通道已经关闭 ,于是Follwer开始进入到Looking,重新回到Leader选举过程,此时集群不能对外提供服务
3、主从数据同步
Zookeeper集群数据同步的核心是原子广播 ,
- 来自Client(客户端)的读请求,直接由
对应Server 的本地副本进行服务 - 来自Client的写请求,Follower会把请求
转给Leader处理 ,因为Zookeeper需要保证每台Server的本地副本是一致性 的
1)AB协议需要确保那些已经在Leader服务器上提交的事务最终被所有的服务器都提交
2)ZAB协议需要确保丢弃只在Leader上被提出而没有被提交的事务
数据同步的过程 : 1)Zookeeper follower Servce收到Client的写 的请求
2)转发给Leader处理
3)Leader节点先将更新持久化到本地
4)然后将此次更新提议给Follower
5)Follower节点接收请求,成功将修改持久化到本地,发送一个ACK给Leader
6)Leader接收到半数以上的ACK时,Leader将广播commit消息并在本地提交信息
7)当收到Leader发来的commit消息时,Follower也会提交该信息
|