只会一点java

java持续学习者,每月一篇博客。罗列出技术栈,慢慢完善,持续学习,总有一天,你会追上甚至超越曾经的大神。
  博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

分布式共识算法 (一) 背景

Posted on 2019-07-15 18:52  只会一点java  阅读(2252)  评论(0编辑  收藏  举报

系列目录

分布式共识算法 (一) 背景

分布式共识算法 (二) Paxos算法

分布式共识算法 (三) Raft算法

分布式共识算法 (四) BTF算法

一、背景

一致性是分布式领最重要的问题。一致性不代表结果的正确与否,而是分布式系统的多个物理节点的处理结果对外呈现的状态一致与否。例如所有节点都达成失败状态也是一种一致性。

二、共识与一致性的区别

一致性描述的是结果状态,共识则是一种手段。达成某种共识并不意味保障了一致性。Paxos就是一种共识算法。

三、共识算法分类

大体可以分为两类算法

1.CFT(Crash Fault Tolerance):不伪造信息的非拜占庭错误,代表算法是Paxos、Raft,特点是性能好,容忍不超过一半的故障节点。

2.BFTByzantine Fault Tolerance):伪造信息的拜占庭错误,特点是性能差,容忍不超过1/3的故障节点。两类代表:

  • PBFT(Practical Byzantine Fault Tolerance)确定性系列算法:一旦达成共识不可逆转,就是最终结果。
  • PoW概率算法:共识是临时的,随着时间推移或变化,共识结果被推翻的概率越来越小,成为最终结果。

特殊的:XFT(Cross Fault Torelrance)等算法可以提供类似CFT的处理性能,并能在大多数节点正常工作时提供BFT保障。