1.分布式一致性算法paxos和raft

1 篇文章 0 订阅
1 篇文章 0 订阅
本文探讨分布式一致性算法的重要性,并详细解释Paxos和Raft算法的工作原理。Paxos保证在2n+1台机器中,即使n台故障也能保持一致性,但超过n+1台则无法保证。而Raft则限制只有一个提案者,通过选举机制确保一致性。文章强调理解一致性算法的本质而非具体名称,指出其保证数据一致性的边界条件。
摘要由CSDN通过智能技术生成

1.研究分布式一致性算法,我们应该关注分布式一致性算法上,而不是关注paxos和raft,无论这个算法叫A也好叫B也好,我们并不关心这个名字。只是paxos给分布式一致性算法提供了一种思路,这种思路其实是很好理解的,就算是稍微有点逻辑的都绝对能看懂,所以不用觉得这个有多神奇。

2. paxos

看一下paxos能保证的极限,或者说它能保证一致的前提条件,或者说它的边界在哪里,首先paxos是保证2n+1台机器中n台挂了,不影响数据的一致性,但是大于 n+1台挂了,就不能保证数据的一致性了( n+1 台存数据 的全部挂了)。所以paxos并不是神。

3. paxos的具体流程

paxos把分布式进程分成3个角色proposer(发起提案,就是说要提出更新数据了)、acceptor(对于提出的提案判决)、learner(同步已经通过的提案)。当然一个程序可以身兼3职,也就是我是proposer,也是acceptor和learner。 一大家子人一起生活,想要统一思想就要大家都认可才行。简单来说想要更新数据,就要通过大家的认可(也就是n+1个人的认可,总数是2n+1)。想要通过大家的认可,要执行两个步骤:

第一步:proposer(想要更新数据的人),向acceptor发送一个id提案,等待超过 n+1 个acceptor的反馈,当n+1个acceptor回复proposer时,proposer进行第二步操作,这一步的目的是看看大多数的acceptor是不是都在一个级别,如果proposer提议一个id为5的提案,大家的id都在3阶段,大家事务4还没同步呢,大家根本就不理你,等大家都到4了,proposer提5大家说前面的都同步了,5可以通过,这样才能进行下一步。

第二步:proposer看大家都可以接受,然后通知acceptor同步这条更新数据,acceptor自己更新完成之后,依然要回复proposer更新成功,proposer等到收到n+1个acceptor回复更新成功,就认为这个数据更新成功。然后通知所有的节点更新成功(这一步不可或缺)。这个时候就算n台挂了,有一个节点保存数据,这个数据就不会丢。

4.raft

raft在paxos的基础是,限定了只能有一个proposer,也就是只有一个节点能发起提案更新数据。

raft的角色划分:

leader 领导者,接受事务请求,同步数据给follower

follower 追随者,同步数据,接受读请求,转发事务请求到leader

candidate 候选者,为参与选举状态

raft多了一个选举leader的过程,当leader选好之后就变成只有一个proposer的paxos。

5.无论是paxos,还是raft我们只关心一致性算法的思路,核心的东西,事物的本质。

这些一致性算法的本质是在2n+1个进程中,当数据已经同步到n+1台机器中的时候,可以保证在n台进程挂了之后还能保证数据的一致性。好吧,我们已经看到这个算法的边界了。它有它不能保证的。

留一问题:如果你想要保证2n+1台机器中,只要小于2n+1台进程挂了都不会影响数据的一致性,该怎么办呢,相信你已经想到了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值