CAP原理及分布式一致性算法

一、CAP原理

这里写图片描述
一个分布式系统最多只能同时满足 一致性(Consistency),可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。
(1)一致性(Consistency)
一致性(Consistency),说的是每一个更新成功后,分布式系统中的所有节点,都能读到最新的信息。即所有节点相当于访问同一份内容,这样的系统就被认为是强一致性的。

(2)可用性(Availability)
可用性(Availability),是每一个请求,都能得到响应。请求只需要在一定时间内返回即可,结果可以是成功或者失败,也不需要确保返回的是最新版本的信息。

(3)分区容错性(Partition tolerance)
分区容错性(Partition tolerance),是说在网络中断,消息丢失的情况下,系统照样能够工作。这里的网络分区是指由于某种原因,网络被分成若干个孤立的区域,而区域之间互不相通

二、分布式一致性算法

(1)Raxos 算法(少数服从多数)
解决的问题:在一个可能发生异常的分布式系统中如何就某个值达成一致,让整个集群的节点对某个值的变更达成一致

任何一个节点都可以提出要修改某个数据的提案,是否通过这个提案取决于这个集群中是否有超过半数的节点同意(所以节点数总是单数)—— 版本标记。虽然一致性,但是只能对一个操作进行操作啊

当一个Server接收到比当前版本号小的提案时,则拒绝。当收到比当前大的版本号的提案时,则锁定资源,进行修改,返回OK. 也就是说收到超过一半的最大版本的提案才算成功。

(2)Raft 算法(少数服从多数)
Raft 算法也是一种少数服从多数的算法,在任何时候一个服务器可以扮演以下角色之一:

Leader:负责 Client 交互 和 log 复制,同一时刻系统中最多存在一个

Follower:被动响应请求 RPC,从不主动发起请求 RPC

Candidate : 由Follower 向Leader转换的中间状态

猜你喜欢

转载自blog.csdn.net/u012017783/article/details/82690901