Open BruceChen7 opened 1 year ago
分布式共识
问题是浪费网络的带宽,后面有优化的算法比如 Gossip 算法。
这个算法并不是严格的保证所有的节点都会收到消息,但是如果参数选的好,这种概率是很小的。
共识,就是多个节点就一个值达成共识。
一个或多个节点提出一个值,共识算法用来决定值。
已经形式化证明total order broadcast 算法和共识算法是等价的。
将 total order broadcast 转成共识,
将共识转换成 total order broadcast,用一组运行共识算法的实例来决定第一条,第二条,第三条消息。
这组实例保证这些被决定的消息被收到。哪个节点想要广播消息,直接提议一个值,交个共识算法实例来决策。
常见的共识算法是 Paxos 和 Raft,Paxo 只是就一个值达成共识,而 Multi-Paxos 实际上是 Paxos 的一般化实现,提供了 FIFO-total order 的广播的实现。
Raft 也是实现的 FIFO-total order 的一种方式。
参考资料
分布式共识
(concept:: 广播协议)
(concept:: 广播模型)
(concept:: FIFO 模型)
因果一致性模型
Total Order broadcast
FIFO-total order broadcast
广播算法
可靠的收到消息
问题是浪费网络的带宽,后面有优化的算法比如 Gossip 算法。
这个算法并不是严格的保证所有的节点都会收到消息,但是如果参数选的好,这种概率是很小的。
复制一致性
(concept:: 分布式事务)
(concept:: 二阶段提交)
二阶段提交的问题
linearizability
(concept:: 线性 vs happens-before 关系)
非线性系统
解决上述非线性一致性
共识
共识,就是多个节点就一个值达成共识。
一个或多个节点提出一个值,共识算法用来决定值。
已经形式化证明total order broadcast 算法和共识算法是等价的。
将 total order broadcast 转成共识,
将共识转换成 total order broadcast,用一组运行共识算法的实例来决定第一条,第二条,第三条消息。
这组实例保证这些被决定的消息被收到。哪个节点想要广播消息,直接提议一个值,交个共识算法实例来决策。
常见的共识算法是 Paxos 和 Raft,Paxo 只是就一个值达成共识,而 Multi-Paxos 实际上是 Paxos 的一般化实现,提供了 FIFO-total order 的广播的实现。
Raft 也是实现的 FIFO-total order 的一种方式。
共识系统模型
领导选举
type/system #ddia #public