Distributed Systems

  • 时间:
  • 浏览:1

上方多数派保证了在每次决议时一定会存活机器知道刚刚 所有达成决议的项的值。什么什么都这么,为什么么保证后续针对刚刚 某个项的决议不后要 不后要 设置项有一种的值?

导致 对Paxos理解困难的一另另几个多 导致 是对分布式共识疑问有一种什么什么都这么较好的理解。先举个简单例子,而且再说明其时要满足的safety和liveness条件。

有一种篇文章主要简单介绍一下分布式共识和一致性协议的背景和Paxos算法,以及我所理解的它的设计逻辑,并按照有一种逻辑尝试非形式化地重新设计Paxos算法,并与Lamport原始论文中的描述相对应。这篇文章主要指basic Paxos,而一定会或多或少变形比如Multi-Paxos及或多或少的leader-based的分布式一致算法,比如Raft/Viewstamped Replication/Zab,后续文章会着重分析leader-based的分布式一致算法。

OK,回到本节刚刚刚刚刚开始的疑问

=>

学习一另另几个多 机会达成共识的值

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/feilengcui008/article/details/1000829689

关于liveness的疑问,机会趋于稳定多个proposer交替抢占导致 的livelock疑问,导致 针对某个项无法达成某个值的决议。有一种在前面也提到FLP定理所限制的。

当然,其中采用全局递增的标识给决议编号在定义另另几个多 决议的另另几个多 阶段的互相交错时的行为上起着决定性作用(有一种点实际上是机会并发提决议导致 的,对于leader-based的算法比如raft实际上在一另另几个多 term期间内不后要 不后要 一另另几个多 有效的leader,所有决议不后要 不后要 由有一种leader发出,好多好多 不趋于稳定有一种疑问,对于每个“”客户端请求决议”term的值不时要增加,而且当进入选主的具体情况时,机会会有并发的candidate发起选主决议了,此时实际上又回到了基本的Paxos,raft采用随机timeout的简单妙招 来处置基本Paxos的livelock疑问)有一种点时要较形式化地分析,不好像上述那样以逻辑推演的妙招 一步一步导出,机会涉及的具体情况转换较多。

先简要回顾下Paxos算法的核心累积:

例子:多人及在食堂决定吃哪些地方菜,不后要 不后要 刚刚 商量好,每人及都能不后要 共同提出一样菜,上方机会或多或少人临时去上厕所了,待会重新回来,要保证的是最终只有一种菜被接受,而且重新回来的人在时要的之能不让不后要 知道这次吃饭到底吃的是哪些地方菜。这里时要注意的是:“共同”说明并发的,或多或少提议的值机会被覆盖的;“有人临时上厕所”说明时要容错,即在机器挂掉下的分布式一致;“重新回来”说明机器recover能不后要 知道刚刚 决议的结果;

达成一轮共识的流程

一致性

好了,或多或少人推导出了多数派不让后要 为分布式一致性算法提供容错的基础,下面或多或少人基于此来尝试设计Paxos算法。

有一种节为上方的文章做个铺垫:-)。曾经面的分析能不后要 想看 ,基本Paxos在面对多个proposer并发提起决议的刚刚 机会导致 livelock的疑问,随便说说 Lamport原论文提到每一轮Paxos刚刚刚刚刚开始前选出一另另几个多 distinguished proposer(leader/master),而且并什么什么都这么完整篇 说明与强化leader有一种概念,这也是上方好多好多 leader-based容错分布式一致性算法强调的或多或少,而强leader的概念能带来好多好多 工程上实现的简化与优化。另外对于多个client的并发请求机会导致 或多或少值的丢失,比如对于日志的replication,client1访问proposer1,client2访问proposer2,而proposer1和proposer2都共同针对当前下一另另几个多 日志项,此时机会导致 某个client的值的覆盖丢失。好多好多 实际中往往会选出一另另几个多 leader,唯一一另另几个多 能接受客户端请求提起决议。

=>

实际上选主处置并发决议的疑问后一切都相对容易理解了,要是 在后续leader的日志恢复以及新recover机器的日志恢复,以及整个集群的恢复方面一定会走基本Paxos的另另几个多 阶段,而在哪些地方地方具体的恢复妙招 和步骤在不同的算法中是不同的,而从Multi-Paxos/ViewStamp replication/Zab/Raft来看,尤其是近两年来的Raft,基本上是在保证基本的容错下的safety和liveness之外去掉 各种限制条件来简化leader选举,日志恢复,日志克隆qq好友好友几个阶段以及或多或少比如membership management,snapshot等功能的。本质上在leader-based的一致性算法中,在leader选举和日志恢复机会会用到基本Paxos,选主后的log replication实际上要是 仅仅用了多数派。上方会更完整篇 讨论。

这里把多数派拿出来的导致 是机会我随便说说 他是设计容错分布式一致性算法的前提和基础。基于前面对分布式一致疑问的说明以及其时要满足的条件,或多或少人先来看看safety的要求,关于liveness在上方会分析。为了方便说明,或多或少人把时要设置值的叫做一另另几个多 项,比如下一另另几个多 日志槽位,一次决议要是 针对某个项设置值。

系统模型

Paxos算法无疑是分布式系统理论中的经典,机会好多好多 论文、博客都什么什么都这么完整篇 分析算法的背景以及实际中应用会产生的非常多的细节疑问,好多好多 导致 太难理解,机会说太难完分发解,实现和测试则是更简化,不过这也是有一种疑问有意思的导致 吧:-)。读过或多或少论文,思考过或多或少疑问,希望能把有一种疑问的背景,以及各种容错分布式一致性算法设计的逻辑和背景记录下来,当然,内容随便说说 什么什么都这么来越多,最早得追溯到迪杰斯特拉对并发与分布式疑问的讨论吧,好多好多 有一种系列准备以Paxos算法为核心,介绍其一系列的衍生算法及其相关的疑问。当然,好多好多 东西是通过或多或少论文结合人及的理解去推测作者当时为什么么去思考设计优化哪些地方地方算法的,至于形式化证明的累积就弱化了。整个系列的最大目的是希望能理清分布式共识疑问的背景,主要容错分布式一致性协议的设计逻辑以及它们的联系与区别,上方有机会分析下实际工程中的实现比如ZooKeeper/Etcd/Consul等,最后机会有机会人及简单实现一下:-)

Liveness

分布式系统的基本特点

自然而然,分另另几个多 阶段,机会或多或少人刚刚 问你针对此项是与非 机会达成决议(这里实际上机会中有 着Paxos算法的主要设计原则之一,即给每个决议请求编号,区分已达成的决议,后发起的决议,以及过时的决议),好多好多 时要prepare阶段询问存活的机器,机会机会达成过,什么什么都这么至少会有一台机器知道有一种值,什么什么都这么或多或少人就用有一种值进入accept阶段,在accept阶段,机会有多数派都同意了有一种值,什么什么都这么决议达成。这要是 Paxos的两阶段流程。另外,为了保证能正确恢复,Paxos算法的两阶段中,在请求响应的地方时要持久化或多或少具体情况值,有一种能不后要 参考原论文。

=>

ref:

分发的或多或少资料

对于Liveness的疑问想多说点,在FLP定理中讨论的模型是完整篇 异步,crash-failure fault但网络可靠有一种假设比较严格的模型,并证明了在此系统模型下不趋于稳定完整篇 的分布式一致性算法能处置分布式共识疑问(注意是完整篇 ,机会或多或少人放弃或多或少Safety机会Liveness的要求,比如保证严格的Safety而使用随机化等妙招 保证一定概率的Liveness,曾经的算法是能实现的,而这也是Paxos一类算法的选着,毕竟放弃了Safety没什么什么都这么来越多意义了),而通常像Paxos和类Paxos算法讨论的模型比FLP中的模型更松:完整篇 异步,网络不可靠,crash-failure fault甚至byzantine fault,好多好多 Paxos类算法本质上也没妙招 完美处置Liveness的疑问,Lamport的原始论文中只提到选主(选出distinguished proposer)来处置有一种疑问,而且至于选主有一种的Liveness和容错疑问并什么什么都这么完整篇 讨论,这在上方选主相关累积一定会涉及到。

Safety

进展性的处置

Contents:

除了处置上方的疑问,选主还能为算法优化与简化带来更大空间。比如raft对选主做限制,保证leader上的日志一定会最新且连续的,在一定程度上简化了lamport在《paxos made simple》中简单提及的multi-Paxos在leader日志恢复的步骤,另外,batch决议请求,让leader保证最新日志优化读请求(leader lease/follower lease)等。

分布式共识疑问通常时要满足Safety和Liveness的要求,具体来说要是 :

简单来说:

=>