首页  

zookeeper如何保证数据一致性     所属分类 zookeeper 浏览量 908
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