zookeeper如何保证数据一致性
所属分类 zookeeper
浏览量 1034
zk 保证 分布式系统数据一致性的核心算法 ZAB 协议(ZooKeeper Atomic Broadcast,原子消息广播协议)
CAP 理论中 CP 实现
ZAB协议的三个过程
消息广播 崩溃恢复 数据同步
消息广播
写请求,Leader 节点将写请求包装成 Proposal 事务,并添加一个全局唯一的 64 位递增事务 ID, Zxid
Leader 节点向集群中其他节点广播 Proposal 事务, Leader 为每一个 Follower 节点分配一个单独的 FIFO 队列,把 Proposal 发送到队列中
Follower 节点收到 Proposal 之后 持久到磁盘上, ACK 给 Leader
Leader 节点收到超过半数 Follower 节点的 ACK 之后(Quorum 机制),提交本地机器上的事务,同时开始广播 commit, Follower 节点收到 commit 之后,完成各自的事务提交。
ZAB 协议对事务请求的处理过程类似于两阶段提交,第一阶段是广播事务操作,第二阶段是广播提交操作
崩溃恢复
集群进入崩溃恢复的几种情况
集群刚启动时进入崩溃恢复阶段选举 Leader
Leader 节点突然宕机或者由于网络原因导致 Leader 节点与过半的 Follower 失去联系,集群进入崩溃恢复模式
Leader选举过程
Leader 宕机后,Follower 节点状态变为 Looking(Observer 不参与选举)
各个节点都会发出一个投票,参与选举
选 Zxid 和 serverid 最大的
zxid 64位数字,高32位是epoch 低32位用于递增计数
选举成功 Leading Following
数据同步
崩溃恢复 选举完成后 执行数据同步
上一篇
下一篇
NoSQL 简介
zookeeper为何不适合做服务发现
zookeeper在kafka中的应用
JVM GC 过程简介
micrometer使用
zookeeper 与 dubbo