ZooKeeper 如何保证数据的一致性?【重要】

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: ZooKeeper 如何保证数据的一致性?【重要】

保证数据的一致性有两种情况,一种是重新选取出新 leader 后的数据同步还有一种是 leader 处理完事务请求后与 follow 保持数据一致。

首先是重新选取出新 leader 后的数据同步,通过 FastLeaderElection 选举算法选出 leader,选出 leader 之后,leader 需要与其他节点进行同步,当超过一半的 follow 与 leader 进行同步完成后,leader 才能成为真正的 leader,然后 follow 会带上自己最大的 ZXID 尝试与 leader 连接,来确定数据是否同步。

其次是 leader 处理完事务请求后与 follow 保持数据一致。事务请求全部是由 leader 处理的,当 leader 收到请求后,会将事务请求转化为事务 Proposal,由于 leader 会为每一个 follow 创建一个队列,所以 leader 会将事务放入响应队列中,按顺序处理事务请求,来保证事务的顺序性。之后会在队列中顺序向其他节点广播该提案。follow 收到后会将其以事务的形式写入到本地日志中,并向 leader 发送反馈 ack,leader 会等待其他 follow 的回复,当收到一半以上的 follow 响应时,leader 会向其他节点发送 commit 消息,同时 leader 提交该提案。当 follow 将数据同步完成之后,leader 会将该 follow 加入到真正可用的 follow 列表中。

image.png

ZooKeeper 如何保证数据的一致性?_Java 大数据运动猿的博客 - CSDN 博客

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
2月前
|
分布式计算 负载均衡 算法
Hadoop-31 ZooKeeper 内部原理 简述Leader选举 ZAB协议 一致性
Hadoop-31 ZooKeeper 内部原理 简述Leader选举 ZAB协议 一致性
31 1
|
2月前
|
分布式计算 Java Hadoop
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
69 1
|
5月前
|
消息中间件 存储 Kafka
kafka 在 zookeeper 中保存的数据内容
kafka 在 zookeeper 中保存的数据内容
56 3
|
Java
分布式系列教程(24) -Zookeeper数据查看工具ZooInspector
分布式系列教程(24) -Zookeeper数据查看工具ZooInspector
115 0
|
7月前
|
前端开发 JavaScript 算法
分布式系统的一致性级别划分及Zookeeper一致性级别分析
分布式系统的一致性级别划分及Zookeeper一致性级别分析
Zookeeper学习---2、客户端API操作、客户端向服务端写数据流程
Zookeeper学习---2、客户端API操作、客户端向服务端写数据流程
Zookeeper学习---2、客户端API操作、客户端向服务端写数据流程
|
7月前
|
网络协议 中间件 数据库
Zookeeper学习系列【三】Zookeeper 集群架构、读写机制以及一致性原理(ZAB协议)
Zookeeper学习系列【三】Zookeeper 集群架构、读写机制以及一致性原理(ZAB协议)
282 0
|
7月前
|
存储 Java API
ZooKeeper【客户端的API操作、写数据流程】
ZooKeeper【客户端的API操作、写数据流程】
|
算法
Zookeeper 的读写机制、保证机制、Watcher(数据变更的通知)
Zookeeper 的读写机制、保证机制、Watcher(数据变更的通知)
170 0
|
存储
Zookeeper 数据模型和节点特性
Zookeeper 数据模型和节点特性
81 0