分布式超級賬本Hyperledger為什么選擇使用kafka引擎實現共識方案


使用kafka集群配置的原因也很簡單,為orderer共識及排序服務提供足夠的容錯空間,當我們向peer節點提交Transaction的時候,peer節點會得到或返回(基於SDK)一個讀寫集結果,該結果會發送給orderer節點進行共識和排序,此時如果orderer節點突然down掉,致使請求服務失效而引發的數據丟失等問題,且目前的sdk對orderer發送的Transaction的回調會占用極長的時間,當大批量數據導入的時候該回調可認為不可用。

固此,在部署生產環境時,需要對orderer進行容錯處理,而所謂的容錯即搭建一個orderer節點集群,該集群會依賴於kafka和zookeeper。

 

一、排序服務原理(Order采用kafka共識引擎)

排序服務的基本工作原理是這樣的:

1)   排序服務Client向OSN發送交易;

2)   OSN節點對交易進行相關檢查,符合條件之后會將交易發送給Kafka集群;

3)   OSN節點從Kafka集群拉取交易消息並對交易消息進行打包將打包之后的交易batch寫入本地數據庫;

4)   OSN節點按客戶端Deliver請求從本地數據庫讀取區塊返回;

 

這種設計主要利用了Kafka的兩個特性(如下圖所示),

1. 發送到Kafka的消息會按序存儲並且保證消費者能夠按序消費;

2. Kafka允許對消息進行分類按照消息的Topic進行分區,分區內部消息依然有序;

 

2. Kafka分區排序

其中特性1幫助Fabric實現了多節點交易的順序一致性,特性2幫助Fabric實現了多通道架構(Kafka的消費者可以選擇訂閱其感興趣的Topic);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM