ZooKeeper保持一致性原理

Zookeeper 集群数据视图一致性原理 单一系统映像(Single System Image)是 Zookeeper 集群的一个关键特性,它确保无论客户端连接到哪个节点,都能看到一致的数据视图。通过数据复制与同步、会话管理和领导选举等机制,Zookeeper 实现了高可用性和一致性,确保在节点故障和选举期间,客户端请求能够被正确处理和同步。 阅读详情

   ZooKeeper作为分布式协调服务,很多分布式的应用都可以基于ZooKeeper来实现分布式锁,服务管理,服务发现,通知订阅等功能。在分布式环境下ZooKeeper如何实现数据的一致性?

结构

   ZooKeeper是在分布式环境下提供服务的,因此它必须要解决单点问题,因此ZooKeeper是一个主备的结构。ZooKeeper 存在leader,follower,observer三种角色,这三种角色在实际服务集群中都是服务节点。

  • leader:处理所有请求,为客户的提供读和写服务
  • follower:只提供读服务,有机会通过选举成为leader
  • observer:只提供读服务

   ZooKeeper中所有请求都是交给leader处理的,因此,如果leader挂了,ZooKeeper就无法再提供服务,这就是单点问题。为了解决单点问题,follower能够通过选举成为新的leader。follower又是如何被选举成为新的leader的?新的leader又是如何保证数据的一致性的?这些都依赖于ZooKeeper所用的分布式一致性协议ZAB。在介绍ZAB协议之前,了解几个概念:

事务
   ZooKeeper作为一个分布式协调服务,需要leader节点去接受外部请求,转化为内部操作(比如创建,修改,删除节点),需要原子性执行的几个操作就组成了事务,这里用T代表。ZooKeeper要求有序的处理事务,因此给每个事务一个编号,每进来一个事务编号加1,假设leader节点中进来n个事务,可以表示为T1、T2、T3…Tn。为了防止单点问题导致事务数据丢失,leader节点会把事务数据同步到follower节点中

事务队列
   leader和follower都会保存一个事务队列,用L表示,L=T1、T2、T3…Tn,leader的事务队列是接受请求保存下来的,follower的事务队列是leader同步过来的,因此leader的事务队列是最新、最全的

任期
   在ZooKeeper的工作过程中,leader节点奔溃,重新选举出新的leader是很正常的事情,所以ZooKeeper的运行历史中会产生多个leader。为了区分各个leader,ZAB协议用一个整数来表示任期,假设用E表示任务,ZooKeeper刚运行时选举出的第一个leader的任期为E=1;第一个leader奔溃后,下面选举出来的leader,任期会加1,E=2,依次类推。加入任期概念的事务应该表示为T(E,n)

ZAB协议

   ZAB协议是为ZooKeeper专门设计的一种支持奔溃恢复的原子广播协议。通过该协议,Zookeepe 基于主从模式的系统架构来保持集群中各个副本之间数据的一致性。Zookeeper 使用一个单一的主进程来接收并处理客户端的所有事务请求,并采用原子广播协议将数据状态的变更以事务的形式广播到所有的副本进程上。ZAB协议主要的作用在于三个方面:

  1. 选举出leader
  2. 同步节点之间的状态达到数据一致
  3. 数据的广播

   ZAB协议有两种模式:崩溃恢复(选主+数据同步)和消息广播(事务操作)。
崩溃恢复
   当整个ZooKeeper集群刚刚启动或者Leader服务器宕机、重启或者网络故障导致不存在过半的服务器与Leader服务器保持正常通信时(Leader选举,必须要存在过半的服务器),所有进程(服务器)进入崩溃恢复模式,首先选举产生新的Leader服务器,然后集群中Follower服务器开始与新的Leader服务器进行数据同步,当集群中超过半数机器与该Leader服务器完成数据同步之后,退出恢复模式进入消息广播模式,Leader服务器开始接收客户端的事务请求生成事务提案来进行事务请求处理。

选举leader

  1. 每个follower广播自己事务队列中最大事务编号maxId
  2. 获取集群中其他follower发出来的maxId,选取出最大的maxId所属的follower,投票给该follower,选它为leader
  3. 统计所有投票,获取投票数超过一半的follower被推选为leader

同步数据

  1. 各个follower向leader发送自己保存的任期E
  2. leader比较所有的任期,选取最大的E,加1后作为当前的任期E=E+1
  3. 将任务E广播给所有follower
  4. follower将任期改为leader发过来的值,并且返回给leader事务队列L
  5. leader从队列集合中选取任期最大的队列,如果有多个队列任期都是最大,则选取事务编号n最大的队列Lmax。将Lmax作为leader队列,并且广播给各个follower
  6. follower接收队列替换自己的事务队列,并且执行提交队列中的事务。至此各个节点的数据达成一致,ZooKeeper恢复正常服务

消息广播
  ZAB 协议的消息广播过程使用的是原子广播协议。在整个消息的广播过程中,Leader 服务器会每个事务请求生成对应的 Proposal,并为其分配一个全局唯一的递增的事务 ID(ZXID),之后再对其进行广播。

  1. leader节点接收到请求,将事务加入事务队列,并且将事务广播给各个follower
  2. follower接收事务并加入事务队列,然后给leader发送准备提交请求
  3. leader 接收到半数以上的准备提交请求后,提交事务同时向follower 发送提交事务请求
  4. follower提交事务
ZooKeeper 如何保证数据一致性? 在分布式场景中,ZooKeeper 的应用非常广泛,比如数据发布和订阅、命名服务、配置中心、注册中心、分布式锁等。 ZooKeeper 提供了一个类似于 Linux 文件系统的数据模型,和基于 Watcher 机制的分布式事件通知,这些特性都依赖 ZooKeeper 的高容错数据一致性协议。 那么问题来了,在分布式场景下,ZooKeeper 是如何实现数据一致性的呢? Zab 一致性协议 ZooKeeper 是通过 Zab 协议来保证分布式事务的最终一致性。Zab(ZooKeeper Atomic Broa 阅读详情

相关推荐

分布式一致性原理与实践:从Paxos到Zookeeper精讲

一致性问题在分布式系统设计中尤为突出,因为系统中的多个节点需要保持数据状态一致,即使在节点故障、网络分区和数据副本更新的条件下。核心挑战在于设计一种机制,当部分节点由于各种原因暂时无法访问时,系统仍能就数据状态达成一致。Paxos算法中包含三个关键角色:提议者(Proposer)、接受者(Acceptor)和学习者(Learner)。这些角色在算法的执行过程中分工合作,通过一系列的消息传递过程达成一致性。

weixin_30299319的博客 767

ZooKeeper是如何保证数据一致性的?

总之,ZAB 协议是 ZooKeeper 实现其作为分布式协调服务核心功能的关键所在,确保了在复杂网络环境和机器故障情况下,仍能提供强大而一致的数据服务,支撑起众多分布式系统的协同工作。往期经典推荐探索分布式强一致性奥秘:Paxos共识算法的精妙之旅-优快云博客Raft共识算法领导者选举流程揭秘-优快云博客Redis使用规范的最佳实践:打造高性能与稳定性的关键法则-优快云博客SpringBoot项目并发处理大揭秘,你知道它到底能应对多少请求洪峰?_springboot并发处理-优快云博客。

我是一名热爱编程和分享知识的技术作者,在金融和教育领域有多年的研发管理经验,感谢您访问我的博客,一定会为您带来不一样的收货! 1810

【论文泛读|附源码】如何进行动力学重构? 神经网络自动编码器结合SINDy发现数据背后蕴含的方程

这一篇文章叫做 **数据驱动**的**坐标发现与方程发现算法**。想回答的问题很简单,就是根据数据写方程。 想想牛顿的处境,如何根据各种不同物体下落的数据,写出万有引力的数学公式的。这篇文章就是来做这件事的。当然,这篇论文并没有从牛顿视角,完全去思考牛顿所想。而是利用现有的**深度学习技术** 和 **动力学重构的方法** 。提出了一种框架,基于现有的计算机技术,去发现物质运动背后的物理规律。 这里直接给出这篇方法的核心思路图,我们后面会逐个讲解。

qq5q13638的博客 2456

ZooKeeper一致性原理

一、ZooKeeper 的实现1.1 ZooKeeper处理单点故障我们知道可以通过ZooKeeper对分布式系统进行Master选举,来解决分布式系统的单点故障,如图所示。图 1.1 Z...

天行健,君子以自强不息;地势坤,君子以厚德载物。 902

高速DAC时钟与配置实战:DAC5681Z硬件设计与寄存器编程详解

在高速数据转换系统中,时钟信号是决定系统性能的核心要素,其稳定性和纯净度直接影响数模转换器(DAC)的输出频谱纯度与动态范围。时钟电路的设计原理涉及信号完整性、阻抗匹配与直流偏置,而内部锁相环(PLL)和延迟锁相环(DLL)的配置则是实现精确时序控制的关键技术。这些技术的价值在于,它们共同保障了高速通信、雷达和任意波形生成等应用对信号实时性与精度的严苛要求。本文聚焦于德州仪器(TI)的DAC5681Z,深入解析其外部时钟输入电路的硬件设计要点,包括端接电阻的计算与选型,并详细拆解通过串行外设接口(SPI)对

weixin_30342363的博客 186

KEIL调试实战:解决‘TRACE HW not present‘错误的完整指南

本文详细解析了KEIL调试中常见的'TRACE HW not present'错误,该错误通常由芯片或ST-LINK调试器不支持高级指令跟踪功能引发。文章提供了从禁用Trace功能到更新固件、检查硬件连接等完整的解决步骤,帮助开发者快速恢复STM32的正常调试,是解决KEIL调试连接问题的实用指南。

weixin_29192365的博客 360

ZooKeeper自身数据一致性

@Author : Spinach | GHB @Link : http://blog.youkuaiyun.com/bocai8058 文章目录0 前言1 ZK数据一致性1.1 ZK选举1.2 ZK原子广播机制(ZAB协议)1.2.1 广播模式1.2.2 恢复模式1.2.3 Paxos与Zab一致性对比1.3 ZK数据同步机制1.3.1 同步准备1.3.2 同步初始化1.3.3 数据同步场景ZK...

GSpinach的博客 3711

搭建ipv6并发代理池

我开了个知识星球,把将本期搭建写成shell脚本已放到了里面,有需要的小伙伴可以自行去取,jd的参数,阿里bxet纯算、快手滑块,Pdd—Anti,ikuai,b站login之-极验3文字,某音ab,瑞数456vmp补环境等等,主要是某些大佬加我问成品,很多人都打着白嫖的手段去加我好友为目的,问完基本就以后没有任何的交集,这样的交好友雀氏没有任何意义。不如我直接开个星球,里面直接放我逆向的成品以及逆向的思路,这样大家各取所需,我也有点收益,意义更明确点,免得浪费大家的时间。我是pve下的ubuntu。

weixin_44697518的博客 1471

ZooKeeper如何保证数据的一致性?

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

m0_51697147的博客 2190

linux 4.19在龙芯平台上编译出错解决方法

OS: Loongnix server 1.7 工具链为:系统自带的gcc-4.8.5 和 gcc-7.3 平台:3A3000/3A4000 源码:kernel: 4.19 编译步骤 ··· make loongson3_defconfig make -j4 ··· 出错信息: HOSTCC arch/mips/boot/compressed/calc_vmlinuz_load_addr arch/mips/boot/compressed/head.S: Assembler messages: arch/m

sense的专栏 1124

从立创商城到Cadence:手把手教你实现封装格式的精准迁移

本文详细介绍了如何从立创商城获取元器件封装并精准迁移至Cadence Allegro的全流程。通过实战案例MAX31865ATP+T芯片,逐步解析Altium Designer格式转换、Cadence环境配置、封装导入验证等关键步骤,提供常见问题解决方案和效率提升技巧,帮助硬件工程师实现封装格式的高效迁移。

weixin_42519985的博客 216

面向服务的体系架构 SOA(三) --- Zookeeper API、zkClient API的使用

zookeeper简单介绍及API使用 1.1 zookeeper简介 zookeeper是一个针对大型分布式系统的可靠的协调系统,提供的功能包括配置维护、名字服务、分布式同步、组服务等。zookeeper可以集群复制,集群间通过zab协议来保持数据的一致性。该协议包括两个阶段:leader election阶段和Atomic broadcas阶段。 leader election...

a540216759的博客 249

HBase在物流行业的应用:轨迹数据存储

想象一下,每天在全球范围内,数以亿计的物流包裹在各个城市、乡镇间穿梭。每一个包裹从发货人手中出发,经过仓储中心、转运站,最终到达收货人手中,这一路上都留下了它的“足迹”,也就是我们所说的轨迹数据。这些数据就像一个个拼图碎片,完整拼接起来后,能够清晰地呈现出整个物流网络的运行状况。例如,你在网上购买了一件心仪已久的商品,迫不及待地想知道它现在到哪儿了。物流平台实时更新的轨迹信息,让你可以准确了解包裹是在运输途中,还是已经到达附近的站点。

架构师的AI之路,分享AI应用开发架构的学习与实践。 965

zookeeper 集群一致性原理

zk集群存在的问题? 每个节点数据一致性同步问题。 zookeeper 如何解决分布式一致性问题 后期扩展新增zk 节点需要注意哪些问题 ZAB原子广播协议 Zookeeper 核心是原子广播协议(ZAB原子广播协议),这种机制保证了各个节点的数据同步的问题,ZAB协议有两种模式 ,分别为恢复模式(选主)和广播模式(同步)。 恢复模式:也就是zk 集群的leader 节点宕机之后,会重新在剩余的 follower 节点中选出新的 leader,新的leader 选出之后采用广播模式实现各个节点与新的 l

weixin_44044929的博客 3106

2026.1.11:WSL2中Ubuntu发行版的完全卸载干净指南

摘要:本文详细介绍在WSL2中彻底卸载Ubuntu发行版的步骤。首先通过wsl -l -v确认安装的发行版,使用wsl --terminate终止运行后,推荐使用wsl --unregister命令完全删除发行版(包括所有数据)。还可手动检查残留文件位置(如%LOCALAPPDATA%目录),并提供了备份建议(使用wsl --export)。最后说明验证卸载的方法和可选的高级重置操作。整个过程确保彻底清理相关数据并释放磁盘空间。(

拥抱具身智能,昇腾Ascend C 2390

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

从Paxos到Zookeeper:分布性一致性原理与实践(初识Zookeeper)

本文旨在对Zookeeper进行初步认识。

山川湖海* 1473

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

《从Paxos到Zookeeper 分布式一致性原理与实践》

第1章 分布式架构 1.1 从集中式到分布式 1.1.1 集中式的特点 1.1.2 分布式的特点 1.1.3 分布式环境的各种问题 1.2 从ACID到CAP/BASE 1.2.1 ACID 1.2.2 分布式事务 1.2.3 CAP和BASE理论 小结 第2章 一致性协议 2.1 2PC与3PC 2.1.1 2PC 2.1.2 3PC 2.2 Paxos算法 2.2.1 追本溯源 2.2.2 Paxos理论的诞生 2.2.3 Paxos算法详解 小结 第3章 Paxos的工程实践 3.1 Chubby 3

ByteX的博客 2749

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Zookeeper的持久性与一致性原理

1.背景介绍 1. 背景介绍 Apache Zookeeper 是一个开源的分布式协调服务,用于构建分布式应用程序。它提供了一种可靠的、高性能的协调服务,以解决分布式系统中的一些复杂问题,如集群管理、数据同步、负载均衡等。Zookeeper 的核心功能包括: 原子性操作:实现分布式环境下的原子性操作,确保数据的一致性。 顺序性操作:保证操作的顺序性,避免数据的混乱。 可见性:确保分布式环境...

AI天才研究院 1081

分布式一致性原理相关总结

分布式一致性原理相关总结1. 集中式和分布式的区别2. ACID、CAP、BASE理论分别是什么3. 2PC、3PC的过程以及两者之间的区别4. Paxos、Raft算法的描述及与上一步中的区别5. ZooKeeper的工作原理6. ZooKeeper的使用场景 1. 集中式和分布式的区别 集中式系统的特点是部署结构简单,无需考虑多个节点之间的协作问题。但是集中式系统: 1.人才培养成本高; 2.用于存储的大型主机成本高; 3.有明显的单点问题,一旦出现故障,整个系统将会处于宕机状态。 分布式系统具有的特征

Mystic 447

分布式一致性原理与实践.pdf下载介绍:全面掌握分布式一致性技术

分布式一致性原理与实践.pdf下载介绍:全面掌握分布式一致性技术 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在当今信息技术迅速发展的时代,分布式系统已经成为处理大规模数据、提高系统可用性和扩展性的重要解决方案。《分布式一致性原理与实践.pdf》是一本专为技术专业人士打造的书籍,它深度剖析了分布式系统一致性的核心概念,通过详尽的解析与丰富的实例,引导读者从理论到实践...

gitblog_06768的博客 1024

4.从Paxos到Zookeeper分布式一致性原理与实践--- Zookeeper 与 Paxos

Apache Zookeeper 是由Apache Hadoop 的子项目发展而来。Zookeeper 为分布式应用提供了高效且可靠的分布式协调服务,提供了 诸如统一命名服务,配置管理和分布式锁等分布式的基础服务。在解决分布式数据一致性方面,Zookeeper 并没有直接采用 Paxos 算法, 而是用了 ZAB(Zookeeper Atomic Broadcast)的一致性算法...

enlyhua的专栏 262

从PAXOS到ZOOKEEPER分布式一致性原理与实践

第一章:分布式架构 分布式的特点 分布性、对等性、并发性、缺乏全局时钟 分布式环境的问题 通信异常、网络分区、三态、节点故障 ACID 原子性 一致性 隔离性 未授权读取(读未提交) 授权读取(读已提交) 可重复读 串行化 持久性 CAP 一致性、可用性、分区容错性 三者最多只能同时满足其中两项 BASE 基本可用(系统出现不可预知故障时,允许损失部分可用性); 软状态...

john__rambo的博客 515

【从Paxos到Zookeeper分布式一致性原理与实践】笔记

从Paxos到Zookeeper的分布式一致性原理与实践

heng_yan的博客 294

第二篇:《从Paxos到zookeeper分布式一致性原理与实践》一致性协议与zookeeper

上一篇总结了下分布式所产生的问---------分布式系统中一致性问题。今天继续站在巨人的肩膀上虚心学习一下,怎样解决这些问题! 一、一致性协议: 计算机大佬们为了解决分布式一致性问题,经过了很长的事件探索和研究,其中三个比较出名的解决一致性协议算法为:二阶段提交算法、三阶段提交算法、Paxos(中文发音:帕克锁斯,英文记忆不是很强所有按照自己的发音加强记忆,有误之处请指出批评)。二阶段、三阶...

qq_34328582的博客 234

《从Paxos到zookeeper:分布式一致性原理与实践》读书笔记

2PC

lonelymanontheway的博客 1369

ZooKeeper学习第八期--ZooKeeper一致性原理

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34262482的博客 117
上一篇: ZooKeeper 回调机制
下一篇: Spark任务调度策略/资源分配
K. Bob
博客等级 码龄8年 82粉丝 294原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值