news 2026/7/26 3:35:09

【ZAB协议】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【ZAB协议】

Multi-Paxos与ZAB协议的核心差异

Multi-Paxos仅能保证值一旦被选定后不再更改,但无法保证:

  • 选定值的内容是否符合业务逻辑(如必须先创建父节点)
  • 多个操作的执行顺序性(如X必须在Y之前执行)

ZAB协议通过以下设计解决这些问题:

  • 主节点(Leader)作为唯一提案者,避免并发提案
  • 为每个提案分配全局唯一且递增的事务ID(zxid)
  • 严格按zxid顺序提交提案

ZAB保证操作顺序性的关键机制

主节点唯一性
所有写请求必须由主节点处理,备份节点收到写请求时会转发给主节点。这避免了多节点并发提案导致的顺序混乱。

事务标识符(zxid)设计
zxid由两部分组成:

  • 高32位:epoch(任期编号),领导者变更时递增
  • 低32位:counter(计数器),同一任期内每个新提案递增

示例:

  • 第一个提案zxid为<1,1>
  • 第二个提案zxid为<1,2>
  • 新领导者上任后第一个提案zxid为<2,1>

顺序广播
主节点通过TCP协议按zxid顺序广播提案,确保:

  • 网络层保证消息先发先到
  • 节点接收提案的顺序与发送顺序一致

顺序提交
主节点必须按zxid顺序提交提案:

  • 只有前一个提案提交后,才会提交后一个提案
  • 即使提案Y先到达多数派,也必须等待提案X先提交

读写请求处理流程

写请求流程

  1. 客户端向任意节点发送写请求(如create /geekbang/time 456
  2. 备份节点将请求转发给主节点
  3. 主节点生成zxid并顺序广播提案
  4. 收到多数派确认后按zxid顺序提交
  5. 返回响应给客户端

读请求优化

  • 默认在任何节点都可读,但可能是稍旧数据
  • 需要强一致性读时,先执行sync命令同步最新状态

故障恢复场景示例

当主节点故障时:

  1. 新领导者选举会产生新的epoch
  2. 新领导者会收集所有未提交提案
  3. 按原zxid顺序重新提交这些提案
  4. 确保即使故障恢复后操作顺序不变

与Raft的对比

虽然ZAB和Raft都保证顺序性,但ZAB:

  • 更早提出(2007年 vs Raft的2013年)
  • 使用zxid而非term+index作为提案标识
  • 广播阶段设计更接近两阶段提交

实际应用验证

在ZooKeeper中创建嵌套节点的正确顺序:

create /geekbang123# 先创建父节点create /geekbang/time456# 再创建子节点

ZAB确保这两个操作会严格按顺序执行,避免出现子节点先于父节点创建的错误。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/26 4:46:15

基于 STM32 的羽毛球运动状态监测系统设计

摘要针对羽毛球运动训练中缺乏精准运动状态监测手段的问题&#xff0c;设计了一套基于 STM32 微控制器的羽毛球运动状态监测系统。系统以 STM32F103C8T6 为主控核心&#xff0c;集成 ADXL345 三轴加速度传感器采集运动员挥拍、移动等身体运动状态数据&#xff0c;通过 OLED 显示…

作者头像 李华
网站建设 2026/7/25 15:39:21

Bilibili-Evolved:打造专属你的B站体验

Bilibili-Evolved&#xff1a;打造专属你的B站体验 【免费下载链接】Bilibili-Evolved 强大的哔哩哔哩增强脚本 项目地址: https://gitcode.com/gh_mirrors/bi/Bilibili-Evolved 作为一个深度B站用户&#xff0c;你是否曾经想过&#xff1a;如果B站能按照我的使用习惯来…

作者头像 李华
网站建设 2026/7/23 15:15:08

VMware云原生转型:传统IT的破局之道

云原生与VMware的融合背景云原生技术的核心概念&#xff08;容器化、微服务、DevOps、持续交付&#xff09;VMware在虚拟化领域的传统优势与转型挑战两者结合的价值&#xff1a;传统企业IT如何平滑过渡到云原生架构VMware Tanzu&#xff1a;云原生的企业级解决方案Tanzu产品套件…

作者头像 李华
网站建设 2026/7/26 0:29:41

Xshell连接故障终极排雷指南

Xshell连接故障排雷技术文章大纲常见连接错误类型认证失败&#xff08;用户名/密码错误、密钥验证问题&#xff09;网络不可达&#xff08;IP/端口错误、防火墙拦截&#xff09;协议不匹配&#xff08;SSH版本冲突、加密算法不支持&#xff09;会话超时或中断&#xff08;网络波…

作者头像 李华
网站建设 2026/7/26 4:01:12

PlugY插件终极指南:暗黑破坏神2单机模式完全解锁

PlugY插件终极指南&#xff1a;暗黑破坏神2单机模式完全解锁 【免费下载链接】PlugY PlugY, The Survival Kit - Plug-in for Diablo II Lord of Destruction 项目地址: https://gitcode.com/gh_mirrors/pl/PlugY 还在为暗黑破坏神2单机模式的种种限制而烦恼吗&#xff…

作者头像 李华
网站建设 2026/7/26 2:52:25

Day37 MLP神经网络的训练

先搞懂基础准备&#xff1a;PyTorch CUDA&#xff08;让训练更快&#xff09; MLP 训练通常用PyTorch 框架&#xff0c;如果电脑有 N 卡&#xff08;NVIDIA 显卡&#xff09;&#xff0c;可以装CUDA让显卡帮着加速计算。 安装&#xff1a;先装对应版本的 CUDA&#xff0c;再…

作者头像 李华