一致性协议
2020-10-12 00:59:07 0 举报
AI智能生成
一致性协议
作者其他创作
大纲/内容
一致性协议
Paxos
按公示问题数可分为
Basic Paxos
Muti Paxos
为了提高效率
角色
Proposer
Acceptor
Learner
推导过程
1. 如果只有1个Proposer会有什么问题?
Q: Proposer宕机的话,整个服务不可用。
2. 那如果多Proposer和多Acceptor如何选定一个Value?
P1:一个Acceptor必须接受他收到的第一个提案
Q: 不同的Proposer分别提出不同的value
P1a:一个提案被选定需要半数以上的Acceptor
暗示:一个Acceptor必须能够接受不止一个提案!
提案=value已不满足,需要重新设计,提案=[提案编号+value]
P2:如果某个value为v的提案被chosen,那么每个编号更高的被选定的提案,value也必须是v
P2a:如果某个value为v的提案被chosen,那么每个编号更高的被Acceptor接受的提案,value也必须是v
对Acceptor接收的提案约束
P2b:如果某个value为v的提案被chosen,那么之后任何Proposer提出编号更高的提案value也必须是v
对Proposer提出提案的约束
Q如何保证? A-P2c
P2c:对于任意N和V,如果提案[N,V]被提出,那么存在一个半数以上的Acceptor集合S,满足以下2个条件中的一个:①S中的每个Acceptor没有接受过编号小于N的提案;②S中接受过的最大编号的提案value为V
paxos算法证明过程
如何保证Paxos算法的活性?
通过选取主Proposer,只有主Proposer才能提出提案
算法流程
阶段1. Prepare请求
a. Proposer 选择一个提案编号 N,然后向半数以上的Acceptor 发送编号为 N 的 Prepare 请求。
b.如果一个 Acceptor 收到一个编号为 N 的 Prepare 请求,且 N 大于该 Acceptor 已经响应过的所有 Prepare 请求的编号,那么它就会将它已经接受过的编号最大的提案(如果有的话)作为响 应反馈给 Proposer,同时该Acceptor 承诺不再接受任何编号小于 N 的提案。
阶段2. Acceptor确认
a.如果 Proposer 收到半数以上 Acceptor 对其发出的编号为 N 的 Prepare 请求的响应,那么它就会发送一个针对[N,V]提案的 Accept 请求给半数以上的 Acceptor。注意:V 就是收到的响应中编号最大的提案的 value ,如果响应中不包含任何提案,那么V 就由 Proposer 自己决定。
b.如果 Acceptor 收到一个针对编号为 N 的提案的 Accept 请求,只要该 Acceptor 没有对编号大于 N 的 Prepare 请求做出过响应,它就接受该提案
ZAB
在Leader选举时节点状态
LOOKING
Leader选举阶段
OBSERVING
不参与投票
FOLLOWING
参与投票
LEADING
ZAB协议的四个阶段
1. 选举阶段
2. 发现阶段
3. 同步阶段
只有当Quorum都同步完成,准Leader才会成为真正的Leader
2. ZK可以通过增加节点,提升集群性能吗?
4. 广播阶段
基于Java的ZAB实现
1. Fast Leader Election
2. Recovery Phase 崩溃恢复,需要解决一下2个问题
保证示例1. Leader产生了proposal,发给Follower之后,只有自己COMMIT。新Leader必须保证这个P也必须COMMIT
保证示例2. Leader产生了Proposal,在宕机之前没有Follower看到这个Proposal。则该Server恢复之后也必须丢失这个P
3. Broadcast Phase 消息广播
简化的2PC
简单的2PC不能处理Leader失效的情况,因此增加了Recovery模式
选举步骤
投票
接受选票
处理选票
统计
QA
1. Paxos和Zab的区别?Zab相比Paxos有什么优点?
Paxos的一致性达不到Zab要求看,Paxos不关心请求之间的逻辑顺序
3. Raft和ZAB之间的区别?
Leader选举
一般的选举过程
如果出现split vote, 如何处理?
加入一个已完成选举的集群,怎么发现Leader?
加入过程是否阻塞整个请求?
上一任Leader残留数据如何处理?
残留数据如何处理?
上一轮Leader家私
请求处理流程
一般流程
出现异常会怎么样?
如何保证顺序?
出现脑裂分区会怎么样?
文献
ZooKeeper学习第七期--ZooKeeper一致性原理
zab paper
Raft
文献
Raft 一致性算法论文译文
寻找一种易于理解的一致性算法(扩展版)
类型
强一致性
弱一致性
最终一致性
读写一致性
因果一致性
0 条评论
下一页