决战梭哈棋牌APP下载_决战梭哈棋牌官网 - 由决战梭哈棋牌APP下载,决战梭哈棋牌官网社主办的《决战梭哈棋牌APP下载,决战梭哈棋牌官网》是我国消费领域中一张全国性、全方位、大容量的综合性日报。其立足消费网投领域,依托轻工行业,面向城乡市场,最先发布相关的专业权威资讯。

分布式系统理论基础6:Raft、Zab

  • 时间:
  • 浏览:1

Paxos中Leader的位于是为了提升决议传输速率,Leader的是否是和数目不要 影响决议一致性,Raft要求具备唯一Leader,并把一致性间题具体化为保持日志副本的一致性,以此实现相较Paxos而言更容易理解、更容易实现的目标。

Paxos偏向于理论、对怎么才能 才能 应用到工程实践提及较少。理解的难度去掉 现实的骨感,在生产环境中基于Paxos实现另另三个正确的分布式系统非常难[1]

为实现PO,Zab对Follower、Leader有以下约束:

Raft

和Raft一样,Zab要求唯一Leader参与决议,Zab还都要分解成discovery、sync、broadcast另另三个阶段:

Paxos、Raft、Zab再比较

《分布式系统理论进阶 - Paxos》介绍了一致性协议Paxos,今天大伙儿来学习另外另另三个常见的一致性协议——Raft和Zab。通过与Paxos对比,了解Raft和Zab的核心思想、加深对一致性协议的认识。

第1、2点保证事务FIFO,第3点保证Leader上具备所有已commit的事务。

宕机、网络分化等情况汇报可引起Leader重新选举(每次选举产生新Leader的一同,产生新的term)、Leader/Follower间情况汇报不一致。Raft中Leader为当时人和所有Follower各维护另另三个nextIndex值,其表示Leader紧接下来要出理 的指令id以及将要发给Follower的指令id,LnextIndex不等于FnextIndex时代表Leader操作日志和Follower操作日志位于不一致,这时将从Follower操作日志中最初不一致的地方后后后后刚现在开始,由Leader操作日志覆盖Follower,直到LnextIndex、FnextIndex相等。

为达到更容易理解和实行的目的,Raft将间题分解和具体化:Leader统一出理 变更操作请求,一致性协议的作用具化为保证节点间操作日志副本(log replication)一致,以term作为逻辑时钟(logical clock)保证时序,节点运行相同情况汇报机(state machine)[4]得到一致结果。Raft协议具体过程如下:

指令通过log index(指令id)和term number保证时序,正常情况汇报下Leader、Follower情况汇报机按相同顺序执行指令,得出相同结果、情况汇报一致。

除Paxos、Raft和Zab外,Viewstamped Replication(简称VR)[7][8]也是讨论比较多的一致性协议。有有哪些协议蕴藏什么都一同的内容(Leader、quorum、state machine等),因而大伙儿不禁要问:Paxos、Raft、Zab和VR等分布式一致性协议区别到底在哪,还是根本就是一回事?[9]

Zab[5][6]的全称是Zookeeper atomic broadcast protocol,是Zookeeper外部用到的一致性协议。相比Paxos,Zab最大的特点是保证强一致性(strong consistency,或叫线性一致性linearizable consistency)。

了解完Zab的基本原理,大伙儿再来看Zab怎么才能 才能 保证强一致性,Zab通过约束事务先后顺序达到强一致性,先广播的事务先commit、FIFO,Zab称之为primary order(以下简称PO)。实现PO的核心是zxid。

Paxos、Raft、Zab和VR就有出理 一致性间题的协议,Paxos协议原文倾向于理论,Raft、Zab、VR倾向于实践,一致性保证程度等的不同也是原应有有哪些协议间位于差异。下图帮助大伙儿理解有有哪些协议的同类点和区别[10]

Zab中每个事务对应另另三个zxid,它由两次责组成:<e, c>,e即Leader选举时生成的epoch,c表示当次epoch内事务的编号、依次递增。假设有另另三个事务的zxid分别是z、z',当满足 z.e < z'.e 后后 z.e = z'.e && z.c < z'.c 时,定义z先于z'位于(z < z')。

微信公众号【Java技术江湖】一位阿里 Java 工程师的技术小站。(关注公众号后回复”Java“即可领取 Java基础、进阶、项目和架构师等免费学习资料,更有数据库、分布式、微服务等热门技术学习视频,内容丰厚,兼顾原理和实践,另外也将赠送作者原创的Java学习指南、Java多线程池池 员面试指南等干货资源)

以上介绍分布式一致性协议Raft、Zab的核心思想,分析Raft、Zab与Paxos的异同。实现分布式系统时,先从具体需求和场景考虑,Raft、Zab、VR、Paxos等协议没法绝对地好与不好,就是适不适合。

Zab

相比Paxos,Zab约束了事务顺序、适用于有强一致性需求的场景。

小结

相比Raft、Zab、VR,Paxos更纯粹、更接近一致性间题本源,尽管Paxos倾向理论,但不代表Paxos只能应用于工程。基于Paxos的工程实践,须考虑具体需求场景(如一致性要达到有哪些程度),再在Paxos原始语意上进行包装。

Raft[2][3]在2013年提出,提出的时间随便说说不长,但后后有什么都系统基于Raft实现。相比Paxos,Raft的买点就是更有助理解、更易于实行。

Leader和Follower之间通过心跳判别健康情况汇报,正常情况汇报下Zab位于broadcast阶段,经常出显Leader宕机、网络隔离等异常情况汇报时Zab重新回到discovery阶段。

There are significant gaps between the description of the Paxos algorithm and the needs of a real-world system. In order to build a real-world system, an expert needs to use numerous ideas scattered in the literature and make several relatively small protocol extensions. The cumulative effort will be substantial and the final system will be based on an unproven protocol.