type
status
date
slug
summary
tags
category
icon
password
*uniform有均匀的意思

Concept

notion image

Basic concept

  • A group of processes, among which some (usually f) may crash(可能出错)
  • 只需要正确结点要达成一致
  • 每个结点都可以提议,但是最终会decide

Consensus

notion image
Termination - 终止:最终一定要决定结果
Validity - 有效性 一个v如果被决定,一定有进程提议过v
Integrity - 完整性 没有进程重复决定
Agreement - 同意 没有两个正确进程决定的不同

Uniform consensus

notion image
Uniform Agreement - 均匀同意:只要决定了就都是相同的

Consensus Algorithms using failure detectors

Algorithm I

notion image
每一轮中该轮对应的leader决定,有两个事件一定有一个发生
notion image
notion image
当目前round的leader为自己,且提议不为空,则广播
收到了message
notion image
p2收到propose后更新轮数,成为本次的leader,同时由于1比2小,更新自己的propose
notion image
算法保证正确结点一致

Uniform consensus

只要决定了的结点(无论是否正确)都统一

Algorithm II

算法2: 只能在N轮之后才能decide
在每轮中进程将提议发送给所有进程,提议更新算法:只要受到了一个提议而且比现在的提议更近就采纳
notion image
notion image
如果已经过了n轮则decide,否则下一轮
notion image

Total Order Broadcast全序广播

不是基于轮数的广播 → 连续共识 考察消息的顺序
causal order中仍然存在乱序(半序广播)
notion image
只考察了m1和m2的关系
在全序中可能不遵循因果序,但是各个节点提交的顺序一致
notion image
notion image
notion image
TOB5 - 全序性质
notion image
notion image
维护unordered集合,如果unordered集合不为空则开始排序

Paxos

 
notion image
notion image
如果没有quorum的话,会出现脑裂问题
同时如果有多个proposals,可能没有共识
使用Quorum和Eventually perfect Failure Detector来实现,通过选取一个主节点来达成共识,轮流成为主节点,直到达成共识
假设中为partial sync:delta最终满足,但是可能波动
菱形P是最终完美错误检测器,有强完整(节点出故障最终一定会被发现)和最终正确(最终不会有正确的进程被怀疑)
考虑到正确进程可能部分被怀疑,因此共识算法I和II的轮数检测是无法推进的
notion image
notion image

Algorithm III

轮数选择:模n算法
notion image
选出一个leader,只要leader没有被怀疑,就会带领节点共识
notion image
pi首先选择潜在的共识结果,然后选择一个值引入到大多数,如果没有被怀疑,就进入decide
*如果第一轮没有潜在的结果,就用自己的
notion image
 
step1先了解共识结果,step2再引入,没有怀疑就decide,这样是一个round
notion image
如果此时是我的轮,而且我手里没有潜在共识结果,那我read一下看
收到read消息后给人家返回一个潜在的结果,在states里面存储每一个结点的信息,当存储的信息量超过majority时(已经超过半数回复了gather)
notion image
此时leader要检查,如果有est和estrnd已经不是初始值,则选出estrnd最高的值作为这次的推荐值,然后广播一个impose消息(如果都是初始值,就广播本地的值
如果收到了impose就返还一个ACK,ACK超过半数的时候就达成共识,决定
notion image
如果是p的轮但它被怀疑,就广播一个NACK,如果有一个节点发送了NACK,所有节点最终都会收到,并且进入下一轮
notion image
消息模式:
 
notion image
*Agreement:使用round最高的作为新的共识
notion image
*复杂度:
notion image
两次通信 - read + impose,同时会有NACK(每个节点要发到N个节点,共f个节点)
FLP不可能定理:
一个异步的确定性共识,当n≥2时是不可能的(C3是最终同步的,不适用这个定理)
然而使用错误检测/同步,没有错误,使用随机机制等方式可以绕过FLP
 
共识3 → Synod → Paxos(完整的全序广播)

Paxos

notion image
在过程中使用Synod
Abstractions 动态规划