这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天
NWR模型
N代表N个备份,W代表要写入至少W份才认为成功,R表示至少读取R个备份。配置的时候要求W+R > N。
W+R > N可以得出R > N-W。即读取的份数比总备份数减去确保写成功的倍数的差值大。也就是说,每次读取,都至少读取到一个最新的版本。从而不会读到一份旧数据。
Raft协议
Raft协议是一种分布式一致性算法,即使出现部分节点故障,网络延时等情况,也不影响各节点,进而提高系统的整体可用性。Raft是使用较为广泛的分布式协议。一定意义上讲,RAFT也使用了Quorum机制。
Raft协议基础概念:
Log (日志): 节点之间同步的信息,以只追加写的方式进行同步,解决了数据被覆盖的问题
Term (任期号) : 单调递增,每Term内最多只有一个Leader
Committed: 日志被复制到多数派节点,即可认为已经被提交
Applied: 日志被应用到本地状态机: 执行了log中命令,修改了内存状态
Leader选举过程和Log Replication过程:
Paxos协议
Paxos协议流程: 第一阶段
(a) 提议者选择一个提议编号n,并向大多数接受者发送一个编号n的准备请求。
(b) 如果承兑人收到的准备请求的编号n大于其已答复的任何准备请求的编号,则承兑人对该请求作出答复,并承诺不接受任何编号小于n且其已接受的编号最高的提案(如有)。
第二阶段
(a) 如果提案人从大多数接受人处收到对其准备请求(编号n)的响应,则它向这些接受人中的每一个发送一个接受请求,请求编号n的提案,其值为v,其中v是响应中编号最高的提案的值,或者如果响应报告没有提案,则v是任何值。
(b) 如果承兑人收到编号为n的提案的接受请求,则除非承兑人已对编号大于n的准备请求作出响应,否则接受该提案。