共识和一致性其实是等价的,两者概念都是希望某个提议只要能够在集群的节点中完成少数服从多数的应答,那么这个提议就算是被落实下来了,在完成这个应答的过程中要面临两个大难题

  • 1、某(个/批)节点宕机的时候要怎么处理
  • 2、某(个/批)节点出现了恶意发送假消息的时候要怎么处理

面对这两类的问题主要分成容错(Crash Fault Tolerance, CFT)类算法和拜占庭容错(Byzantine Fault Tolerance, BFT)类算法

在常规的内部的分布式环境中,我们都会假定不会出恶意发送假消息的问题, 会使用非拜占庭容错的协议,这样性能会更高,常见的有

  • paxos
  • raft

但是在公网的环境中,会面临着恶意节点请求的问题,因此需要使用拜占庭容错的协议

常见的拜占庭容错共识机制

  • PBFT
  • POW(Proof Of Work)
  • POS(Proof Of Stake)
  • DPOS(Delegate Proof Of Work)
  • POH(Proof Of History)

基本概念

拜占庭容错

拜占庭容错(BFT)不是某一个具体算法,而是能够抵抗拜占庭将军问题导致的一系列失利的系统特点。 这意味着即使某些节点出现缺点或恶意行为,拜占庭容错系统也能够继续运转。本质上来说,拜占庭容错方案就是少数服从多数。

带思考的问题?

  • 共识的本质是什么?