第五章 九析帶你輕鬆完爆 hyperledger fabric - 網絡節點介紹

本系列文章:


第一章:九析帶你完爆 fabric - 快速搭建區塊鏈

第二章:九析帶你完爆 fabric - 快速搭建 GO 環境

第三章:九析帶你完爆 fabric - 快速上手 first-network 樣例

第四章:九析帶你完爆 fabric - 系統邏輯架構篇

第五章:九析帶你完爆 fabric - 網絡節點介紹

目錄

1 前言

2 節點分類

    2.1 CA 節點

    2.2 客戶端節點

    2.3 orderer 節點

    2.4 peer 節點

        2.4.1 Anchor 節點

        2.4.2 Endorsor 節點

        2.4.3 Committer 節點

        2.4.4 peer 節點聲明

3 總結


1 前言

        fabric 區塊鏈網絡是由各種不同類型的節點所組成,正是這些不同類型的節點按照各自的作用和分工進行交互,才使得整個區塊鏈得以正常運作。


2 節點分類

        本文按照節點學習難易程度進行排序,上面最簡單,下面難度依次增加。

        區塊鏈網絡中的節點大致可分爲四類:CA 節點、客戶端節點、orderer 節點、peer 節點。

2.1 CA 節點

        CA 節點作用是頒發證書,它爲網絡中的節點通信提供憑證(證書)。攜帶經過 CA 認證過的證書進行的交易纔會被接受。CA 節點並非是區塊鏈網絡中強制性節點,即:它是可選的(optional)。此外,在 fabric 區塊鏈網絡中,你既可以選擇 fabric 自身提供的 CA 認證方式,也可以選擇其他第三方認證方式。

        以下舉一個生活中的例子才解釋 CA 節點:某小區(區塊鏈網絡),物業公司(CA 頒發機構)會給各個住戶提供小區鑰匙(證書),只有擁有物業公司提供的鑰匙才允許在小區內部各門之間走動(交易)。當然物業公司是業主可以選擇的,你既可以選擇萬科,也可以選擇綠城,或者有些老小區根本就沒有物業(CA 可選擇)

2.2 客戶端節點

        客戶端節點是區塊鏈的實際使用者,因此區塊鏈網絡就可以有多個客戶端節點同時存在。它們既可以跟 orderer 節點進行交互創建通道(channel),也可以跟 peer 節點進行交互模擬交易執行等。大部分的區塊鏈操作都是通過客戶端節點來發起的。

2.3 orderer 節點

        orderer 節點是排序節點。它的作用類似一個管道或者過濾器。它從各個客戶端節點接收發送過來的交易,接着將這些交易按照一定的規則進行排序,然後將排好序的交易按照固定的時間間隔再打包成區塊,最後發送給組織的 Anchor 節點(下面會講,這裏先記住即可)。orderer 節點的排序規則目前官方只提供兩種方式:solo 和 kafka。

        solo 中文翻譯是“獨奏”,在區塊鏈網絡中表示只有一個 orderer 節點,所以它的排序規則就是按照 orderer 節點接受交易的先後順序來排序,也就是生活中的先來後到原則。由於 solo 模式表示區塊鏈網絡中只有一個 orderer 節點,所以很容易導致單點故障,故生產環境中並不會使用此方式。

        kafka 即消息服務器。使用此排序方式的 orderer 節點,其實是將整個排序工作交給 kafka 集羣去實現。 orderer 作爲 kafka 的生產者,將客戶端節點發送過來的交易發送給 kafka,然後再作爲 kafka 的消費者,接收從 kafka 發送回來的交易結果,根據從 kafka 接收到的消息順序就是最終排序的結果。這種方式有一定的隨機性,但是確實有點***子放屁的嫌疑。但目前生產環境大多采用這樣排序方式。

2.4 peer 節點

        除了 CA、客戶端、orderer 之外的其他節點之外就都是 peer 節點了,但 peer 節點又根據功能不同分爲 Anchor、Endorsor 和 Committer 節點。爲了理解上的方便,我們舉一個技術公司的例子:

        orderer 節點相當於 CTO;客戶端節點相當於產品經理;CA 節點相當於業務需求方;peer 節點則是一個統稱,代表全體技術人員,但是根據分工不同,peer 會有不同的角色,比如 Anchor 節點(項目經理)、Endorsor 節點(研發人員)、Committer(實習生)。

2.4.1 Anchor 節點

        一般情況下,每個技術公司都會分多個項目組,每個項目組都會指定一個項目經理和多個開發人員。在 fabric 區塊鏈網絡中,項目組對應組織(Organization),項目經理對應 Anchor 節點(組織中的主節點或錨節點)。在組織中,只有 Anchor(項目經理)跟 Orderer 節點(CTO)唯一進行通信,假如 Anchor 節點(項目經理)生病了(宕機),該組織內部的其他 peer 成員可以選舉一個新節點作爲 Anchor 節點。

2.4.2 Endorsor 節點

        Endorsor 節點是背書節點(擔保節點),智能合約就運行在背書節點之上。客戶端發送交易提案給背書節點,背書節點模擬執行之後對執行結果進行簽名背書,再將模擬執行結果返回給客戶端節點。如果你對這樣的定義很難理解,我們不妨接着上面的例子做一個類比。

CTO(orderer 節點)想統計每個研發人員(Endorer)的績效,研發人員(Endorsor)的績效是完成了多少產品經理(客戶端)需求。當客戶端(產品經理)提出需求後,Endorsor 節點接受需求後執行,如果有多個 Endorsor 節點,那麼這幾個節點都會去執行客戶端的需求,執行完畢後會通知客戶端,那麼到底這個需求是誰完成了呢?產品經理(客戶端)不做評判,它只是實事求是地把每個 endorsor 節點完成的情況告訴 CTO(orderer)節點,然後讓 CTO 去判斷究竟是誰的績效(這個過程便是 fabric 網絡中的共識機制)。CTO 評判確定 Endorsor 後,會把績效同步給項目組(組織)的 Anchor(項目經理),Anchor 收到通知後,就會廣播給組織內部的所有節點,所有節點收到消息後就會同步績效結果(記賬)。

2.4.3 Committer 節點

        peer 節點除了 Anchor(項目經理)、Endorsor(研發人員)之外的其他類型節點就是 Committer 節點了。它就像實習生一樣(不負責實際開發任務),只被動接收績效記錄(Comitter)。

2.4.4 Peer 節點聲明

        peer 節點基本介紹完了,但還需要聲明一下,peer 節點的角色並不具備排他性,也就是說一個 peer 節點,它既可以是 anchor,也可以同時是 endorsor,也可以同時是 committer。就像在一個項目組中就有一個人,它既是一個實習生,也同時是項目經理和實際開發一樣。


3 總結

image.png

        上圖就是整個 fabric 網絡節點拓補結構圖。可以結合本人上面的介紹對照加深理解。自此,fabric 區塊鏈網絡中的節點以及節點作用都介紹結束了。如果你覺得九析的介紹對你有幫助的話,麻煩你給九析點個贊哦,謝謝!^_^

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章