Hyperledger Fabric 节点类型Commiter、
2020-11-30 本文已影响0人
小蜗牛爬楼梯
①记账/确认(Commiter)节点:
通道中的每个对等节点都是一个记账节点。它们接收生成的交易区块,随后这些区块在被提交到节点的账本副本之前先被验证。
②背书(Endorser)节点:
具有智能合约的每个对等节点都可以是背书节****点。要真正成为一个背书节点,客户端应用程序必须使用对等节点上的智能合约来生成经过数字签名的交易响应。智能合约的背书策略标识了哪些组织中的节点应该在交易被提交节点的账本副本接受之前对交易进行背书。
③领导/主(Leader)节点:
当一个组织在一个通道中有多个节点时,领导节点负责将交易从排序节点分发到组织中的其它节点。一个节点可以选择参与静态或动态的领导选举。从领导的角度考虑,两组节点是有帮助的——一组是静态的领导者选举,另一组是动态的领导者选举。对于静态集,可以将0个或多个对等节点设置为leader。对于动态集合,仅一个节点会被推选为leader,并且在动态集合中,如果leader peer发生故障,那么其余的peer将重新选举leader。这意味着一个组织可以有一个或多个领导节点连接到排序服务。这有助于在处理大量交易的大型网络中提高弹性和可伸缩性。
④锚(Anchor)节点:
Fabric中,每个组织可以指定Anchor Peer,其他组织的节点就可以将Gossip消息发送到这个Anchor Peer上,进而Anchor Peer将获得整个网络信息,区块广播到本组织内。
如果一个节点需要与其他组织中的节点进行通信,它可以使用在该组织的**通道配置**中定义的锚节点。锚节点可以用于许多不同的跨组织通信场景。channel上的每个成员都有一个anchor peer(或多个anchor peer 来防止单点故障),允许属于不同成员的peer发现channel上的所有现有peer。
在指定Anchor Peer时,节点自己首先需要配置gossip.externalEndpoint,默认为空,其他节点在发送消息到非本组织节点时,如果目的节点externalEndpoint为空则不会发送;
然后在创建Channel时指定Anchor peer,对Fabric 1.0.x,创建Channel时指定的Anchor Peer并不会生效(根本不会读取Anchor Peer的配置),需要在channel 创建后更新Anchor Peer配置。
节点收到配置更新消息后,会更新Anchor Peer信息,其实就是尝试和Anchor Peer建立通信,发送Membership request信息获取对段网络成员信息用于更新本地的网络成员信息。
节点在发送Gossip消息时,会从本地网络成员中随机选取目的节点,根据Gossip消息的性质,譬如有些要求本组织,有些要求时本Channel等来发送,对于非本组织的消息,则只发送到Anchor peer节点。
注意:一个节点可以同时是以上的四种节点。只有锚节点是可选的——出于实际目的,总会有一个领导节点,并且至少有一个背书节点和一个提交节点。