超級賬本(Hyperledger Fabric)共識
由于fabric是分布式的系統(tǒng),因此需要共識機制來保障各個節(jié)點以相同的順序狀態(tài)保存賬本,達成一致性。fabric 廣義的共識機制為三個階段:交易背書,交易排序,交易驗證。而有些認為“交易排序”是屬于共識,在當前fabric1.4版本中,存在三種共識機制,分別是solo,kafka,etcdraft。交易排序圖:
排序節(jié)點收到該交易以后會按照通道進行拆分,拆分以后再進行排序,也就是說排序并不是全局排序,而是按照每一個通道單獨排序,最后分別組裝成區(qū)塊發(fā)往主節(jié)點,通道之間是相互隔離的,它們并不會知道彼此的存在,但是每一個組織的節(jié)點都可以訂閱多個通道。
Solo共識模式:指網(wǎng)絡環(huán)境中只有一個排序節(jié)點,從Peer節(jié)點發(fā)送來的消息由一個排序節(jié)點進行排序和產(chǎn)生區(qū)塊,由于排序服務只有一個排序節(jié)點為所有Peer節(jié)點服務,沒有高可用性和可擴展性,不適合用于生產(chǎn)環(huán)境,通常用于開發(fā)和測試環(huán)境。
Kafka 共識模式:對所有交易信息進行排序(如果系統(tǒng)存在多個channel,則對每個channel分別排序)。Kafka是一個分布式的流式信息處理平臺,目標是為實時數(shù)據(jù)提供統(tǒng)一的、高吞吐、低延遲的性能。
Etcdraft 共識模式:它是一種基于 etcd 的崩潰容錯(CFT)排序服務。遵循 “領導者和追隨者” 模型,其中領導者在通道中的orderer節(jié)點之間動態(tài)選出,該領導者將消息復制到跟隨者節(jié)點。由于系統(tǒng)可以承受節(jié)點(包括領導節(jié)點)的丟失,只要剩下大多數(shù)排序節(jié)點(即所謂的“仲裁”),Raft就被稱為“崩潰容錯”(CFT)。換句話說,如果一個通道中有三個節(jié)點,它可以承受一個節(jié)點的丟失(剩下兩個節(jié)點)。