简述 ZAB 协议(zookeeper Atomic Broadcast )【重要】

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 简述 ZAB 协议(zookeeper Atomic Broadcast )【重要】

image.png

首先 zookeeper 的核心是原子广播,这个机制保证了各个 server 之间的同步,而实现这个机制的协议叫做 ZAB 协议。ZAB 协议是为 zookeeper 专门设计的一种支持故障恢复的消息广播协议。

ZAB 协议只允许有一个主进程接收客户事务请求并处理,也就是 Leader。当 Leader 收到请求后,由于 leader 会为每一个 follow 创建一个队列,所以会将该事务放入响应队列中,并将那些没有被各 follow 服务器同步的事务转化为 Proposal 消息的形式发送给 follow 服务器,按顺序来处理事务,保证事务的顺序性。之后 leader 会在队列中顺序向其他节点广播该提案,follow 收到后会将其以事务的形式写入到本地日志中,并向 leader 发送反馈 ack 确认。leader 会等待其他 follow 的回复,当收到一半以上的 follow 响应时,leader 会向其他节点发送 commit 消息,同时提交该提案。

ZAB 有两种模式,分别是故障恢复模式和消息广播模式。当系统启动或者 leader 服务器出现故障等现象时,会进入故障恢复模式,这是会开启 leader 新一轮的选举,选举产生的准 leader 会与超过一半的 follow 进行同步,使数据一致。

当同步结束后,退出恢复模式,进入消息广播模式。当一台遵从 ZAB 协议的服务器启动后,如果检测到有 leader 在广播消息,会自动进入故障恢复模式,当其完成与 leader 的同步之后,才会进入消息广播模式;如果集群中的非 leader 节点收到客户端事务请求,非 leader 节点会将请求发送给 leader 服务器。

在故障恢复模式的时候,ZAB 协议需要保证两个地方,第一个是 ZAB 协议需要保证已经被 leader 提交的事务最终被所有的机器提交,第二个是需要保证必须要丢弃掉那些只在 leader 上提交的事务。选举时如果选择 ZXID 最大的节点则可以保证这两点问题。

leader 重新选举的条件是当 leader 宕机或发生故障,集群中少于一半的节点与当前 leader 保持连接。

简述 ZAB 协议(zookeeper Atomic Broadcast )_Java 大数据运动猿的博客 - CSDN 博客

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
2月前
|
分布式计算 负载均衡 算法
Hadoop-31 ZooKeeper 内部原理 简述Leader选举 ZAB协议 一致性
Hadoop-31 ZooKeeper 内部原理 简述Leader选举 ZAB协议 一致性
31 1
|
3月前
|
监控
分布式-Zookeeper-Zab协议
分布式-Zookeeper-Zab协议
|
4月前
|
消息中间件 分布式计算 安全
这一次,彻底弄懂ZooKeeper协议
ZooKeeper是动物园的意思,在2012年官方来给ZooKeeper写了这么一段有趣的“ZooKeeper之道”,难怪ZooKeeper现在发展得这么好。动物园管理员对他们负责的动物和参观动物的游客都尽心尽力。他们遵循一套守则,至今只有同行才知道,这套守则可以保证动物和游客的安全。大家好,我是南哥。一个Java学习与进阶的领路人,相信对你通关面试、拿下Offer进入心心念念的公司有所帮助。
154 4
这一次,彻底弄懂ZooKeeper协议
|
5月前
|
Nacos 微服务
Zookeeper 的 ZAB 协议 以及 zookeeper 与 nacos 注册中心比对
Zookeeper 的 ZAB 协议 以及 zookeeper 与 nacos 注册中心比对
96 4
|
7月前
|
消息中间件
【ZooKeeper系列】那ZooKeeper为什么还采用ZAB协议
ZooKeeper的流程是这样的,针对客户端的事务请求,Leader服务器会为其生成对应的事务Proposal,并发送给集群中其余机器,然后再分别收集各自的选票。因为ZAB协议将二阶段提交中的事务中断逻辑移除,所以只需要收集过半Follower服务器的反馈Ack后即可,最后就是进行事务提交。
【ZooKeeper系列】那ZooKeeper为什么还采用ZAB协议
|
7月前
|
存储 负载均衡 网络协议
ZooKeeper【基础 01】简介+设计目标+核心概念+ZAB协议+典型应用场景
【4月更文挑战第10天】ZooKeeper【基础 01】简介+设计目标+核心概念+ZAB协议+典型应用场景
96 1
|
3月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
3月前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1
|
3月前
|
存储 负载均衡 Dubbo
分布式-Zookeeper(一)
分布式-Zookeeper(一)
|
21天前
|
存储 运维 NoSQL
分布式读写锁的奥义:上古世代 ZooKeeper 的进击
本文作者将介绍女娲对社区 ZooKeeper 在分布式读写锁实践细节上的思考,希望帮助大家理解分布式读写锁背后的原理。