Zab算法协议
-
简化的Paxos算法,多台服务器通过内部投票表决机制决定一个数据的更新与写入。
-
恢复模式:选出leader。
-
广播模式:同步保证leader和follower的状态相同。
选举机制
- 第一轮投票默认投给自己。
- 编号越大的server选择权重越大。
- 投票数大于半数则胜出。
过半机制
- 一半以上的server同意proposal才能成功。
- 保证了数据的一致性。
2pc事务提交
- 客户端发起写请求。
- 如果是follower节点接收到则返回给leader。
- leader将请求转化为proposal广播分发给follower。
- 超过一半的follower执行成功,leader再次发送commit,要求follower提交上一个proposal。
- leader节点将数据同步给observer节点。
- follower节点将数据返回给客户端。
如何保持数据一致?
- Follower通过队列和zxid等顺序保证请求的处理顺序。