分布式一致性共识简介---CAP理论和Paxos共识算法

1.1 CAP定理

  cap定理是下面三个单词的首字母缩写:

  (1)Consistency:一致性

    通信超时和更新延迟都属于一致性问题,出现这个问题原因是存在多台服务器,而且每台服务器都有自己的数据,

  输入数据冗余可以提高系统的可用性和分区容错性,但是难以满足强一致性。如果想要解决一致性问题,也就是达到

  强一致性,比如把所有的请求都通过单台服务器处理,那么就很难达到高可用性。

  (2)Availability:可用性

    对于高可用性的系统来说,往往会保留强一致性。典型的就是延迟处理,利用消息队列之类的中间件,在后台逐个处理

  队列中的请求,当处理完毕之后,系统达到了强一致性状态。但是要求强一致的系统,比如元数据系统,分布式数据库系统,

  它们的可用性往往是有上限的。

  (3)Partition-tolerance:分区容错性

  CAP定理指出,在异步网络模型中,不存在一个系统可以同时满足上面3个属性。换句话说,分布式系统必须舍弃其中的一个属性。

  从经验上来说,可用性或者一致性都是往往被弱化的对象。

分布式系统中不存在同时覆盖3个属性的区域,但是可以找到同时覆盖两个属性的区域,如下维恩图:

1.2 共识算法

  保证所有的参与者都有相同的认知(可以理解为强一致性)。共识算法本身可以依据是是否有恶意节点分为两类,

大部分时候共识算法都是没有恶意节点的那一类,系统中的节点不会向其他的节点发送恶意请求,比如欺骗请求。

  共识算法最有名的应该是Paxos算法。

  1.2.1 Paxos算法

  由Leslie Lamport在1998年发表的The Part-Time Parliament中提出的共识算法。

  大体的流程,三种角色:

  (1)Proposer(提案人):提出提案,并向Acceptor发送提案。

  (2)Acceptor(接受者):参与决策,回应提案,如果提案获得多数过半Acceptor接受,则认为提案被批准。

  (3)learner(学习者):不参与决策,只学习最新达成一致的提案。

  Paxos算法中的决议过程分两种,一种是对单个value(值)的决议过程,也就是对单个值达成一致。

  另一种是针对连续多个value的决议过程。前者称为Basic Paxos,后者称为Multi Paxos。

  Basic Paxos:

    (1)Proposer生成全局唯一且递增的proposal id,并向所有的Acceptor发送prepare请求。

    (2)Acceptor收到请求后,如果proposal id正常,则回复已接受的proposal id种最大的决议id和value。

    (3)Proposer接收到多数Acceptor的响应后,从答应中选择proposal id最大的value,并发送给所有的Acceptor。

    (4)Acceptor收到proposal之后,接受并持久化当前的proposal id和value。

    (5)Proposer收到多数Acceptor的响应之后形成决议,Proposer发送决议给所有learner。

    对于多个value,来回两次的决议使其性能不是很理想,所以针对连续的多个value决议的Multi Paxos。

    Multi Paxos基本思想是先使用Basic Paxos决议出leader,再由leader推进决议。Multi Paxos和Basic Paxos的具体不同:

    (1)每个Proposer使用唯一的id标志。

    (2)使用basic paxos在所有Proposer中选取一个leader,由leader提交proposal给Acceptor表决,这样Basic Paxos中的

  (1)-(3)都可以跳过,提高效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值