分布式-Zookeeper-Zab协议

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 分布式-Zookeeper-Zab协议

Zab协议

Zab协议:Zab协议和分布一致性协议Paxos协议一样的,Zookeeper并没有使用Paxos分布式一致性协议,而是使用Zookeeper独有的Zab协议,这个协议也是保证了Zookeeper数据的一致性的,Zab协议有点类似于2pc协议,两段提交。

在Leader选举的过程中涉及到了Zab协议,Zab协议中涉及两个方面:

1、原子广播:为了保证数据的一致性。

比如说一个客户端的一个写的请求过来,这个请求会直接落在leader上。

写完之后会在Leader上面会生成一个日志,这个日志由Leader进行原子广播,就是通知所属下的follower节点,我的数据更新了(这个协议属于Proposal的提议),你们马上去更新,所有的foolower更新之后会给Leader的一个回馈(发回一个ACK的确认的标志)。为了保证效率的话,只要Leader不挂掉的话,只要所有的foolower节点的一半加1的个数的节点反馈给Leader(由于网络的原因不会等到所有的从节点都给返回ACK),这时Leader会向所有的在线foolower节点(不管是否发送ACK)发送commit请求,从而所有的foolower节点的日志文件的数据和Leader节点的日志文件同步,这就是Zab协议保证数据的一致性。

为什么不是所有的follow节点都返回ACK呢?

原因如下:有可能当Leader发出Proposal协议的时候,有可能follow节点挂掉了。这也就是follow节点不全返回ACK的原因。zk集群至少保证两台。

2、崩溃修复

当Leader崩溃的话,也就是挂掉的话,所有的follow节点会根据zxid和serverId的大小来选举出哪个是Leader。zxid事务最大的表明它已经执行了提议并且执行了commit的命令。一旦最大,说明它的数据是最新的。说明数据同步的开销就很小。这就是zab协议设计非常经典的地方。

然后客户端是根据Zab协议中的Following和Leading去判断哪个是Leader。

而Looking状态是还没有找到Leader。Observer有点类似于管家的角色,既不参与投票和选举,用来收集票数的和监控节点的状态的。当zk集群进行leader选举的时候,整个集群不对外提供服务的,observer状态将是wating状态。当leader选举出来的话,observer才是工作的状态。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
3月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
3月前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1
|
14天前
|
存储 运维 NoSQL
分布式读写锁的奥义:上古世代 ZooKeeper 的进击
本文作者将介绍女娲对社区 ZooKeeper 在分布式读写锁实践细节上的思考,希望帮助大家理解分布式读写锁背后的原理。
|
2月前
|
JSON 分布式计算 前端开发
前端的全栈之路Meteor篇(七):轻量的NoSql分布式数据协议同步协议DDP深度剖析
本文深入探讨了DDP(Distributed Data Protocol)协议,这是一种在Meteor框架中广泛使用的发布/订阅协议,支持实时数据同步。文章详细介绍了DDP的主要特点、消息类型、协议流程及其在Meteor中的应用,包括实时数据同步、用户界面响应、分布式计算、多客户端协作和离线支持等。通过学习DDP,开发者可以构建响应迅速、适应性强的现代Web应用。
|
2月前
|
分布式计算 NoSQL Java
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
48 2
|
2月前
|
分布式计算 负载均衡 算法
Hadoop-31 ZooKeeper 内部原理 简述Leader选举 ZAB协议 一致性
Hadoop-31 ZooKeeper 内部原理 简述Leader选举 ZAB协议 一致性
31 1
|
2月前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
50 1
|
2月前
|
架构师 Java 数据中心
二阶段提交:确保分布式系统中数据一致性的关键协议
【10月更文挑战第16天】在分布式系统中,数据一致性的维护是一个至关重要的挑战。为了应对这一挑战,二阶段提交(Two-Phase Commit,简称2PC)协议应运而生。作为一种经典的分布式事务协议,2PC旨在确保在分布式系统中的所有节点在进行事务提交时保持一致性。
40 0
|
3月前
分布式-Zookeeper-数据订阅
分布式-Zookeeper-数据订阅
|
2月前
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
51 0