12.0 Zookeeper 数据同步流程

在 Zookeeper 中,主要依赖 ZAB 协议来实现分布式数据一致性。

ZAB 协议分为两部分:

  • 消息广播
  • 崩溃恢复

消息广播

Zookeeper 使用单一的主进程 Leader 来接收和处理客户端所有事务请求,并采用 ZAB 协议的原子广播协议,将事务请求以 Proposal 提议广播到所有 Follower 节点,当集群中有过半的Follower 服务器进行正确的 ACK 反馈,那么Leader就会再次向所有的 Follower 服务器发送commit 消息,将此次提案进行提交。这个过程可以简称为 2pc 事务提交,整个流程可以参考下图,注意 Observer 节点只负责同步 Leader 数据,不参与 2PC 数据同步过程。

崩溃恢复

在正常情况消息广播情况下能运行良好,但是一旦 Leader 服务器出现崩溃,或者由于网络原理导致 Leader 服务器失去了与过半 Follower 的通信,那么就会进入崩溃恢复模式,需要选举出一个新的 Leader 服务器。在这个过程中可能会出现两种数据不一致性的隐患,需要 ZAB 协议的特性进行避免。

  • 1、Leader 服务器将消息 commit 发出后,立即崩溃
  • 2、Leader 服务器刚提出 proposal 后,立即崩溃

ZAB 协议的恢复模式使用了以下策略:

  • 1、选举 zxid 最大的节点作为新的 leader
  • 2、新 leader 将事务日志中尚未提交的消息进行处理

下个章节详细讲解 leader 选举过程。

希望你也学会了,更多编程源码模板请来二当家的素材网:https://www.erdangjiade.com

相关推荐
YH行业报告分析3 小时前
2026年直流配电网市场结构性增长解析:分布式能源并网与智能电网升级驱动下的技术路线博弈
分布式·能源
剑胆琴心静水深流11 小时前
全栈之路6---web集成与呈现
前端·vue.js·spring boot·分布式·spring·前端框架·npm
林浅不想努力12 小时前
k8s集群部署的方法原理
云原生·容器·kubernetes
輝太くん13 小时前
k8s中的pod管理
云原生·容器·kubernetes
大大大大晴天13 小时前
大数据平台为什么必须走向云原生:从资源孤岛到弹性数据基础设施
大数据·云原生
潘正翔14 小时前
k8s高级_调度器Deployment
linux·运维·云原生·容器·kubernetes·jenkins·devops
阿里云云原生14 小时前
云效 AI 助手深度解析:如何贯穿需求、代码、测试与发布的全链路闭环?
云原生
KAIWEILIUCC15 小时前
Ray:高性能、易扩展的Python分布式计算框架
分布式·llm
yunwei3718 小时前
eBPF 教程:用 BPF Qdisc 实现出口限速
linux·云原生·开源
彭友圈10118 小时前
K8s 集群部署方法与原理总结
云原生·容器·kubernetes