Fabric 节点分类以及配置
节点分类
在 HF 中,有背书节点,提交节点,锚节点和领导节点。一个节点可以同时是一个提交节点,背书节点,领导节点和锚节点!出于实践的考虑,总会有一个领导节点,至少一个背书节点和至少一个提交节点。
排序节点是特殊的,它不属于哪一个通道,游离于通道之外,更具体说是排序服务( orderer service)。
Endorsing Peer
根据相应的认可策略指定的节点(每个节点都有可能是,也只有它们安装了 application chaincode ),负责执行链码事务并将提案响应返回到客户端应用程序。提案响应包括链码执行响应消息,结果(读集和写集)和事件,以及签名。
Committing Peer
通道中的所有节点都是提交节点,验证交易的有效性,然后将这些块提交(写入/追加)到其通道账本,并更新自己的世界状态。
Anchor Peer
锚节点用于跨组织点对点通信。节点与锚节点联系,能获得锚节点所知道的所有节点的信息。一旦来自每个组织的至少一个节点联系到锚节点,则锚节点将了解该通道中的每个节点。
由于组织之间的通信依赖于 Gossip 才能起作用,因此在通道配置中必须至少定义一个锚节点。官方强烈建议每个组织提供自己的一个或多个锚节点,以实现高可用性和防止单点错误。
设置锚节点:
- &org1
Name: org1
ID: org1MSP
MSPDir: ./data/orgs/org1/msp
AnchorPeers:
- Host: org1-peer
- Port: 7051
# generate anchor peer transaction
configtxgen -profile OrgsChannel -outputAnchorPeersUpdate ./crypto-config/org1Anchors.tx -channelID publicchannel -asOrg org1
if [ "$?" -ne 0 ]; then
echo "Failed to generate anchor peer update for maersksea..."
exit 1org1 fi
Leading Peer
每个组织可以在其加入的 channel 中拥有多个节点。这些节点中的一个或多个应充当该 channel 的 leading peer,以便代表组织与网络的排序服务进行通信。排序服务将区块发给对应 channel 的 leading peers,然后由他们将其分发给同一组织内的其他节点。这样会减轻排序服务的压力。
设置主节点:
// 手动定义一个或多个
export CORE_PEER_GOSSIP_USELEADERELECTION=false
export CORE_PEER_GOSSIP_ORGLEADER=true
// 动态选取一个
export CORE_PEER_GOSSIP_USELEADERELECTION=true
export CORE_PEER_GOSSIP_ORGLEADER=false
Orderer Peer(O_S)
排序节点(或者说排序服务)负责整个网络的交易进行排序,并分发给订阅自己的主节点。
- 排序由一个成员完成,则该成员必须得到其他所有人的信任。
- 网络中所有成员信任的第三方。
- 网络中涉及的所有各方都运行一个订购者,他们进行沟通和协调。