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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 简述 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实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
1月前
|
消息中间件
【ZooKeeper系列】那ZooKeeper为什么还采用ZAB协议
ZooKeeper的流程是这样的,针对客户端的事务请求,Leader服务器会为其生成对应的事务Proposal,并发送给集群中其余机器,然后再分别收集各自的选票。因为ZAB协议将二阶段提交中的事务中断逻辑移除,所以只需要收集过半Follower服务器的反馈Ack后即可,最后就是进行事务提交。
27 1
【ZooKeeper系列】那ZooKeeper为什么还采用ZAB协议
|
3月前
|
网络协议 中间件 数据库
Zookeeper学习系列【三】Zookeeper 集群架构、读写机制以及一致性原理(ZAB协议)
Zookeeper学习系列【三】Zookeeper 集群架构、读写机制以及一致性原理(ZAB协议)
110 0
|
9月前
|
存储
zookeeper的ZAB协议的原理以及底层源码实现超级详解 2
zookeeper的ZAB协议的原理以及底层源码实现超级详解
107 1
|
5月前
|
存储 负载均衡 网络协议
ZooKeeper【基础 01】简介+设计目标+核心概念+ZAB协议+典型应用场景
ZooKeeper【基础 01】简介+设计目标+核心概念+ZAB协议+典型应用场景
58 0
|
9月前
zookeeper的ZAB协议的原理以及底层源码实现超级详解 1
zookeeper的ZAB协议的原理以及底层源码实现超级详解
53 1
|
11月前
|
算法
ZooKeeper-集群-ZAB协议与数据同步
前言 在前面两篇文章中,我们认识了什么是ZooKeeper,ZooKeeper有哪些功能,ZooKeeper集群,以及ZooKeeper集群中的选举机制。那么在ZooKeeper集群中,数据是如何在节点间同步的呢?数据同步过程中又会产生哪些问题又是如何解决的呢? 在下面这篇文章中,将为大家讲解
155 0
|
29天前
|
监控 负载均衡 Cloud Native
ZooKeeper分布式协调服务详解:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析ZooKeeper分布式协调服务原理,涵盖核心概念如Server、Client、ZNode、ACL、Watcher,以及ZAB协议在一致性、会话管理、Leader选举中的作用。讨论ZooKeeper数据模型、操作、会话管理、集群部署与管理、性能调优和监控。同时,文章探讨了ZooKeeper在分布式锁、队列、服务注册与发现等场景的应用,并在面试方面分析了与其它服务的区别、实战挑战及解决方案。附带Java客户端实现分布式锁的代码示例,助力提升面试表现。
123 2
|
4月前
|
消息中间件 Java 网络安全
JAVAEE分布式技术之Zookeeper的第一次课
JAVAEE分布式技术之Zookeeper的第一次课
71 0
|
2月前
|
监控 NoSQL Java
Zookeeper分布式锁
Zookeeper分布式锁
90 1
|
4月前
|
NoSQL 中间件 API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(下)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
86 2