智慧合約DAPP理財模式系統開發技術方案

a1271916008發表於2023-04-18

每個組織都有一個或多個主節點與排序節點進行連線,但是過多的節點與排序節點進行通訊無疑會佔用過多的頻寬。為了靈活利用頻寬,Fabric 提供兩種方式指定主節點:


靜態指定:系統管理員可以自定義配置一個或多個節點作為該組織的主節點;

動態選舉:節點可以透過選舉選擇一個節點作為主節點。

這兩種方式都可以透過修改 core.yaml 的 useLeaderElection 和 orgLeader 欄位值指定主節點選擇方式。useLeaderElection 表示是否採用選擇方式,orgLeader 表示該節點是否為主節點。因此,兩個值均為 true 是非法的,而兩個值為 false,則表明該節點為 stand-by 模式,即該節點將不會成為主節點。如果 useLeaderElection 為 false,則必須保證組織內至少有一個節點 orgLeader 值為 true。


1. 靜態指定主節點

core.yaml 設定如下:


peer:

    gossip:

        useLeaderElection: false # 不進行動態選舉主節點

        orgLeader: true          # 指定該節點為主節點


或者配置環境變數:


export CORE_PEER_GOSSIP_USELEADERELECTION=false

export CORE_PEER_GOSSIP_ORGLEADER=true

1

2

前面提到,如果指定某個節點不為主節點也是可以的:


peer:

    gossip:

        useLeaderElection: false # 不進行動態選舉主節點

        orgLeader: false         # 指定該節點為非主節點


或者配置環境變數:


export CORE_PEER_GOSSIP_USELEADERELECTION=false

export CORE_PEER_GOSSIP_ORGLEADER=false


2. 動態選舉主節點

動態選舉配置資訊:


peer:

    gossip:

        # Leader election service configuration

        election:

            # Longest time peer waits for stable membership during leader election startup (unit: second)

            startupGracePeriod: 15s

            # Interval gossip membership samples to check its stability (unit: second)

            membershipSampleInterval: 1s

            # Time passes since last declaration message before peer decides to perform leader election (unit: second)

            leaderAliveThreshold: 10s

            # Time between peer sends propose message and declares itself as a leader (sends declaration message) (unit: second)

            leaderElectionDuration: 5s


Gossip 動態選舉演算法有如下特點:


節點的角色透過比較節點 ID 來確定

每個節點只有兩種角色:主節點和從節點,當所有節點的共識一致的時候,就會產生一個主節點

如果網路被劃分為多個分割槽,則每個分割槽都有一個主節點,當多個分割槽合併為一個分割槽的時候,則主節點的數量也應該只留下 1 個

節點之間的通訊傳送兩種訊息:

proposal 訊息:申請成為主節點

declaration 訊息:宣告自己為主節點

每個節點都在後臺持續執行:


如果主節點不存在,則進入主節點選舉過程;

如果節點為主節點,則廣播 declaration 訊息,宣告自己為主節點,如果收到別的節點傳送的較低 節點 ID值,則成為從節點;

如果節點為從節點,並且在一定時間內(由 core.yaml 中的 leaderAliveThreshold 設定,預設 10 秒)沒有收到其它節點傳送的 declaration 訊息,則設定主節點不存在。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69983064/viewspace-2946497/,如需轉載,請註明出處,否則將追究法律責任。

相關文章