当前位置: 首页 > news >正文

【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确保这两个操作会严格按顺序执行,避免出现子节点先于父节点创建的错误。

http://www.jsqmd.com/news/89651/

相关文章:

  • 告别单选困境:Layui多选下拉框的优雅解决方案
  • tinySubFinder字幕下载
  • 基于SSM的在线药品销售系统【源码+文档+调试】
  • Mammoth.js实战指南:轻松实现Word转HTML的完整解决方案
  • DOCX.js终极指南:在浏览器中生成Word文档的完整解决方案
  • 两次数字电路模拟程序+课堂测验
  • 深圳|广州|东莞|昆明-茶饮培训课程哪家好|茶饮培训机构怎么选|新中式茶饮培训哪家好|茶饮技术培训|新式茶饮培训|中式茶饮培训课程——圣旺水吧 - 老百姓的口碑
  • 抖音无水印视频下载器:5分钟掌握高清保存技巧
  • 时序数据库
  • 原生 JavaScript 组件化开发:摆脱框架束缚的架构之道
  • 基于SSM的学生信息管理系统【源码+文档+调试】
  • 5分钟精通Windows更新通道自由切换:OfflineInsiderEnroll深度解析
  • Servlet
  • 元宇宙应用的AI测试方案:智能化测试框架与实践策略
  • ComfyUI-Manager跨版本迁移实战指南:5步解决配置兼容难题
  • 飞书文档批量导出终极指南:25分钟搞定700+文档本地备份
  • Umi-OCR技术架构深度解析:插件化引擎与多场景应用实战
  • E-Hentai下载器完整指南:轻松打包图库为ZIP文件
  • 【MySQL XA规范】
  • FF14自动跳过副本动画插件完整使用指南
  • 六音音源修复终极教程:轻松解决洛雪音乐播放难题
  • Shutter Encoder深度解析:从技术架构到实战应用的完整指南
  • VMware云原生转型:传统IT的破局之道
  • LRCGET:离线音乐库批量歌词同步解决方案
  • 10分钟搞定AI语音克隆:GPT-SoVITS零基础完整指南
  • QThread: Destroyed while thread is still running
  • 基于SSM的连锁店管理平台【源码+文档+调试】
  • 20251214周日日记
  • KeymouseGo自动化工具:5个实战场景解决你的重复工作烦恼
  • AI生成电影预告片:从代码到震撼大片