ZooKeeper的Paxos算法

zookeeper协议篇-Paxos算法与ZAB协议 拜占庭帝国有许多支军队,不同军队的将军之间必须制订一个统一的行动计划,从而做出进攻或者撤退的决定,同时,各个将军在地理上都是被分隔开来的,只能依靠军队的通讯员来进行通讯。然而,在所有的通讯员中可能会存在叛徒,这些叛徒可以任意篡改消息,从而达到欺骗将军的目的。这就是著名的拜占庭问题,而这个问题就和分布式场景下异步系统和不可靠的协议中达到一致性类似,后来Lamport 在 1990年提出了一个理论上的一致性解决方案,茼时给出了严格的数学证明,Paxos算法由此而生。 阅读详情

 Paxos

  • Paxos 这个算法是Leslie Lamport在1990年提出的一种基于消息传递的一致性算法 Paxos 算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。
  • part-time parliament Paxos Made Simple里这样描述Paxos算法执行过程:
    • prepare 阶段:
      • proposer【申请人】 选择一个提案编号 n 并将 prepare 请求发送给 acceptors【接收者】 中的一个多数派;
      • acceptor 收到 prepare 消息后,如果提案的编号大于它已经回复的所有 prepare 消息,则 acceptor 将自己上次接受的提案回复给 proposer,并承诺不再回复小于 n 的提案;
    • 批准阶段:
      • 当一个 proposer 收到了多数 acceptors 对 prepare 的回复后,就进入批准阶段。它要向回复 prepare 请求的 acceptors 发送 accept 请求,包括编号 n 和根据 P2c 决定的 value(如果根据 P2c 没有已经接受的 value,那么它可以自由决定 value)。
      • 在不违背自己向其他 proposer 的承诺的前提下,acceptor 收到 accept 请求后即接受这个请求。
    • Learn 阶段:
      • 当各个Acceptor达到一致之后,需要将达到一致的结果通知给所有的Learner;

故事的形式举例

  • 有一个叫做Paxos的小岛(Island)上面住了一批居民,岛上面所有的事情由一些特殊的人决定,他们叫做议员(Senator)。 
  • 议员的总数(SenatorCount)是确定的,不能更改。 
  • 岛上每次环境事务的变更都需要通过一个提议(Proposal),每个提议都有一个编号(PID),这个编号是一直增长的,不能倒退。 
  • 每个提议都需要超过半数((SenatorCount)/2+1)的议员同意才能生效。 
  • 每个议员只会同意大于当前编号的提议,包括已生效的和未生效的。 
  • 如果议员收到小于等于当前编号的提议,他会拒绝,并告知对方:你的提议已经有人提过了。这里的当前编号是每个议员在自己记事本上面记录的编号,他不断更新这个编号。整个议会不能保证所有议员记事本上的编号总是相同的。
  • ------------------------------------------------------------------------------------------------------------
  • 现在议会有一个目标:保证所有的议员对于提议都能达成一致的看法。 
    • 好,现在议会开始运作,所有议员一开始记事本上面记录的编号都是0。 
    • 有一个议员发了一个提议: 
      • 将电费设定为1元/度。他首先看了一下记事本,嗯,当前提议编号是0,那么我的这个提议的编号就是1,于是他给所有议员发消息:1号提议,设定电费1元/度。其他议员收到消息以后查了一下记事本,哦,当前提议编号是0,这个提议可接受,于是他记录下这个提议并回复:我接受你的1号提议,同时他在记事本上记录:当前提议编号为1。发起提议的议员收到了超过半数的回复,立即给所有人发通知:1号提议生效!收到的议员会修改他的记事本,将1好提议由记录改成正式的法令,当有人问他电费为多少时,他会查看法令并告诉对方:1元/度。 
  • ------------------------------------------------------------------------------------------------------------
  • 现在看冲突的解决: 
    • 假设总共有三个议员S1-S3,S1和S2同时发起了一个提议:1号提议,设定电费。S1想设为1元/度,S2想设为2元/度。结果S3先收到了S1的提议,于是他做了和前面同样的操作。紧接着他又收到了S2的提议,结果他一查记事本,咦,这个提议的编号小于等于我的当前编号1,于是他拒绝了这个提议:对不起,这个提议先前提过了。于是S2的提议被拒绝,S1正式发布了提议:1号提议生效。S2向S1或者S3打听并更新了1号法令的内容,然后他可以选择继续发起2号提议。 
  • 好,我觉得Paxos的精华就这么多内容。现在让我们来对号入座,看看在ZKServer里面Paxos是如何得以贯彻实施的。 
    • 小岛(Island)——ZKServerCluster 
    • 议员(Senator)——ZKServer 
    • 提议(Proposal)——ZNodeChange(Create/Delete/SetData…) 
    • 提议编号(PID)——Zxid(ZooKeeperTransactionId) 
  • 正式法令——所有ZNode及其数据: 
    • 貌似关键的概念都能一一对应上,但是等一下,Paxos岛上的议员应该是人人平等的吧,而ZKServer好像有一个Leader的概念。没错,其实Leader的概念也应该属于Paxos范畴的。如果议员人人平等,在某种情况下会由于提议的冲突而产生一个“活锁”(所谓活锁我的理解是大家都没有死,都在动,但是一直解决不了冲突问题)。Paxos的作者Lamport在他的文章”ThePart-TimeParliament“中阐述了这个问题并给出了解决方案——在所有议员中设立一个总统,只有总统有权发出提议,如果议员有自己的提议,必须发给总统并由总统来提出。好,我们又多了一个角色:总统。 
    • 总统——ZKServerLeader 
    • 现在我们假设总统已经选好了,下面看看ZKServer是怎么实施的。 
      • 情况一: 
          屁民甲(Client)到某个议员(ZKServer)那里询问(Get)某条法令的情况(ZNode的数据),议员毫不犹豫的拿出他的记事本(localstorage),查阅法令并告诉他结果,同时声明:我的数据不一定是最新的。你想要最新的数据?没问题,等着,等我找总统Sync一下再告诉你。 
        情况二: 
          屁民乙(Client)到某个议员(ZKServer)那里要求政府归还欠他的一万元钱,议员让他在办公室等着,自己将问题反映给了总统,总统询问所有议员的意见,多数议员表示欠屁民的钱一定要还,于是总统发表声明,从国库中拿出一万元还债,国库总资产由100万变成99万。屁民乙拿到钱回去了(Client函数返回)。 
        情况三: 
          总统突然挂了,议员接二连三的发现联系不上总统,于是各自发表声明,推选新的总统,总统大选期间政府停业,拒绝屁民的请求。 
SAP_SD模块路径及运输功能后台配置简介 后台路径:SPRO—后勤执行—装运—基本发运功能—定义路线—定义传输模式根据实际运输过程运输地理的类型:海运、公路运输、空运后台路径:SPRO—后勤执行—装运—基本发运功能—定义路线—定义发运类型根据实际运输过程运输方式:汽车、卡车、火车、轮船、飞机后台路径:SPRO—后勤执行—装运—基本发运功能—路径—定义路线—定义运输连接点指在运输过程中需要中转的地区可以维护中转地区的停留的时间后台路径:SPRO—后勤执行—装运—基本发运功能—路径—定义路线—定义路径和阶段。 阅读详情

相关推荐

LABVIEW学习之MODBUS-TCP通讯

LABVIEW学习之MODBUS-TCP通讯 1,MODBUS-TCP通讯介绍: MODBUS通讯是工业上面经常用到的一种通讯协议。该协议的原理及介绍不在此累述,下面直接介绍LABVIEW对此协议的应用。 2,MODBUS通讯所需的函数: 安装了DSC模块之后可以在数据通信内找到相关函数 3 ,主VI 主要思路就是使用状态机来进行连接 读取 写入 断开。使用枚举类型来选择状态: 1,连接 2,写入多个M继电器: 3,写入单个M继电器 4,写入双字节D...

风动9527的博客 2万+

深入浅出Zookeeper特性以及Paxos算法

Zookeeper是一个分布式协调服务的开源框架。主要用来解决分布式集群中应用系统的一致性问题。ZooKeeper本质上是一个分布式的小文件存储系统。提供类似于文件系统的目录树方式的数据存储,并且可以对树中的节点进行有效管理。从而用来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。

qq_49948651的博客 1280

深入GD32/STM32引脚复用:你的JTAG/SWD接口是怎么‘消失’的?一次讲清原理与预防

本文深入解析GD32/STM32调试接口(JTAG/SWD)突然失效的原理与预防措施。通过分析MCU启动流程、引脚复用机制及典型错误代码模式,揭示调试接口'消失'的根本原因,并提供硬件设计检查清单、软件防护代码及开发流程优化方案,帮助开发者有效避免烧录失败问题。

weixin_42532938的博客 369

ZooKeeper与Paxos

揭开zooKeeper的神秘面纱!

码说芯语的博客 1325

VMware Workstation Pro 16 安装 Ubuntu 20.04

VMware Workstation Pro 16 安装 ubuntu 20.04目录环境VMware Workstation下载Ubuntu 20.04下载安装过程 目录 环境 Windows 10 Workstation 16 Pro for Windows Ubuntu 20.04 LTS 64位 desktop版本 VMware Workstation下载 链接: https://www.vmware.com/products/workstation-pro/workstation-pro-eval

qq_45642410的博客 1万+

echarts实现3D地图——map3D

【代码】echarts实现3D地图——map3D。

xiaoququ的博客 7323

zookeeper之Paxos算法

一、定义 一种基于消息传递且具有高度容错特性的 一致性算法。 二、解决什么问题 如何快速正确的在一个分布式系统中对某个数据值达成一致,并且保证不论发生任何异常, 都不会破坏整个系统的一致性。 三、思想 在一个Paxos系统中,首先将所有节点划分为Proposer(提议者),Acceptor(接受者),和 Learner(学习者)。(注意:每个节点都可以身兼数职)。 2、一个完整的Paxos算法流程分为三个阶段: (1)Prepare准备阶段 Proposer向多个Accep...

勇心在馨 604

Xilinx Vitis 2020.1头文件路径配置避坑指南:解决#include找不到文件的常见问题

本文针对Xilinx Vitis 2020.1开发环境中常见的#include头文件找不到问题,提供了系统的避坑指南。文章深入解析了Vitis的头文件搜索机制,对比了通过工程属性GUI、修改编译命令及使用环境变量三种配置方法的优劣与隐藏陷阱,并给出了高级场景的排查流程与工程结构最佳实践,帮助开发者高效解决路径配置难题。

weixin_28831399的博客 571

《从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

FAST-LIO2实战:如何在无人机上部署并实现厘米级定位(附ROS配置全流程)

本文详细介绍了如何在无人机上部署FAST-LIO2激光雷达惯性里程计系统,以实现厘米级精确定位。内容涵盖从硬件选型(如激光雷达与机载计算机)、软件环境配置(ROS Noetic)、传感器标定,到FAST-LIO2参数调优、与PX4飞控集成以及实际飞行测试的全流程。重点解决了实时定位中的外参标定、数据同步等关键问题,为无人机在无GPS或复杂光照环境下提供稳定可靠的定位解决方案。

weixin_29062865的博客 250

【STM32G474实战】RS485通信的DMA优化策略与性能对比

本文深入探讨了在STM32G474微控制器上优化RS485通信的DMA策略。通过对比轮询、中断和DMA三种数据传输方式的代码实现与性能,揭示了DMA在解放CPU、降低占用率方面的巨大优势。文章提供了详细的DMA配置指南、高级应用技巧(如结合空闲中断)以及一个高可靠通信框架的实战思路,旨在帮助开发者构建高效、实时的工业控制系统。

weixin_29268331的博客 303

(二)ZooKeeper 【ZAB协议、Paxos算法】

本文介绍了分布式系统中的核心概念与算法,重点解析了CAP原则、BASE理论、数据一致性分类及Paxos算法。主要内容包括:1)CAP原则中数据一致性、可用性与分区容错性的权衡取舍;2)BASE理论的基本可用性、软状态和最终一致性特性;3)数据一致性分为强一致性、弱一致性和最终一致性;4)Paxos算法原理及其在分布式系统中的应用,包括ZAB协议在ZooKeeper中的实现。文章通过图表和实例阐述了分布式系统设计中的关键问题与解决方案。

yang_xs的博客(只讲干货) 1532

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Paxos算法与ZooKeeper应用详解

Paxos算法作为分布式一致性领域的经典协议,为解决分布式系统中的共识问题提供了坚实的理论基础。ZooKeeper通过ZAB协议对Paxos算法进行了优化和扩展,使其更适应主从架构的协调服务场景。ZAB协议引入的Leader角色、ZXID事务ID机制和同步阶段,有效解决了Paxos算法中的提案竞争、事务顺序性和恢复机制等问题,提高了系统的活性和性能。随着分布式系统的发展,Paxos算法及其变体(如ZAB、Multi-Paxos等)将继续发挥重要作用。

weixin_45422672的博客 838

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【Zookeeper灵魂】一个关于Paxos算法的故事

作者:大数据研习社  来源:优快云  原文:https://blog.youkuaiyun.com/dajiangtai007/article/details/68488701  版权声明:本文为博主原创文章,转载请附上博文链接! Zookeeper默认采用FastLeaderElection算法,然而FastLeaderElection对于Zookeeper来讲只是相当于paxos中的leader选举。...

Mask_V的博客 355

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

zookeeper原理知识之Paxos算法

先说Paxos,它是一个基于消息传递的一致性算法,Leslie Lamport在1990年提出,近几年被广泛应用于分布式计算中,Google的Chubby,Apache的Zookeeper都是基于它的理论来实现的,Paxos还被认为是到目前为止唯一的分布式一致性算法,其它的算法都是Paxos的改进或简化。有个问题要提一下,Paxos有一个前提:没有拜占庭将军问题。就是说Paxos只有在一个可信的计...

Forest24的博客 251

zookeeper基础(Paxos算法)

Paxos算法基础1.简介1.1一致性1.2Paxos算法1.2.1算法简介1.2.2算法描述1.2.2.1三种角色1.2.2.2Paxos 算法的一致性 1.简介 zookeeper原由雅虎研究院开发,后捐赠予apache基金会。zk是一个开源的分布式 应用程序协调服务器,它为分布式的系统提供了一致性的服务。如何保证一致性?其一致性是基于 Paxos 算法的 ZAB协议完成的。zk可以做什么?主要有:配置维护、域名服务、分布式同步、集群管理等。 zookeeper官网 1.1一致性 Q: zk如何保证分布

桃子dev的博客 484

zookeeper分布式一致性——Paxos算法

搭建HA集群的时候需要先安装zookeeper,而zookeeper的作用就是保持分布式一致性,它是如何保持分布式一致性的呢?接下来做一个具体了解。 说到zookeeper我们不得不提及Paxos,因为可以说Paxos是Zookeeper的灵魂。Paxos,它是一个基于消息传递的一致性算法,Leslie Lamport在1990年提出,近几年被广泛应用于分布式计算中。Google的Chubby...

东北溜达滑的博客 541

Paxos算法概述:从Basic Paxos到Fast Paxos及在Zookeeper中的应用

Basic Paxos算法是一种经典的分布式一致性算法,用于解决分布式系统中的一致性问题。它主要用于确保在一个分布式系统中,即使在网络不可靠的情况下,也能达成一致的决策。Proposer(提议者):负责发起提议的实体。Acceptor(接受者):负责接受或拒绝提议的实体。Learner(学习者):从接受者那里学习到最终决定的实体。Prepare(准备):Proposer选择一个唯一的轮次号(Round Number),并向Acceptor发送一个prepare请求。

qq_45115959的博客 1249

Zookeeper与paxos算法

一、 zookeeper是什么 官方说辞:Zookeeper 分布式服务框架是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。 好抽象,我们改变一下方式,先看看它都提供了哪些功能,然后再看看使用它的这些功能能做点什么。 二、 zookee...

zhuguanghalo的博客 538

【Java-ZooKeeper】ZAB 和 Paxos 算法的联系与区别?

本文对比分析了ZAB协议与Paxos算法的异同。两者核心区别在于:Paxos是通用分布式共识算法,采用多轮投票机制;ZAB则是ZooKeeper专用协议,依赖Leader顺序广播。关键联系在于都基于过半提交原则,解决类似问题。通过三将军攻城的类比故事,形象说明Paxos类似民主议会(人人可提案),ZAB则像君主立宪(仅Leader提案)。总结表格显示,Paxos理论严谨但实现复杂,ZAB则针对协调服务优化,牺牲通用性换取更高性能。ZAB可视为Paxos在特定场景的优化实现。

ZGW0513的博客 1179

ZooKeeper Paxos算法

ZooKeeper Paxos算法 先说Paxos,它是一个基于消息传递的一致性算法,Leslie Lamport在1990年提出,近几年被广泛应用于分布式计算中,Google的Chubby,Apache的Zookeeper都是基于它的理论来实现的,Paxos还被认为是到目前为止唯一的分布式一致性算法,其它的算法都是Paxos的改进或简化。 有个问题要提一下,Paxos有一个前提:没有拜占庭将军问...

jeikerxiao 378

Paxos算法与Zookeeper分析

1 Paxos算法 1.1 基本定义 算法中的参与者主要分为三个角色,同时每个参与者又可兼领多个角色: ⑴proposer 提出提案,提案信息包括提案编号和提议的value; ⑵acceptor 收到提案后可以接受(accept)提案; ⑶learner 只能"学习"被批准的提案; 算法保重一致性的基本语义: ⑴决议(value)只有在被proposers

xhh198781的专栏 6万+
上一篇: zookeeper中的ZAB协议理解
下一篇: kafka与其他消息队列对比
Future_LL
博客等级 码龄9年 215粉丝 255原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值