Hyperledger Fabric GOSSIP_BOOTSTRAP & GOSSIP_EXTERNALENDPOINTS 超级账本 Fabric 的 GOSSIP_BOOTSTRAP 和 GOSSIP_EXTERNALENDPOINTS

12

我正在查看 docker 配置文件,并发现对等环境中有两个参数,如下所示:

environment:
      - CORE_PEER_ID=peer0.org1.example.com
      - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org1.example.com:7051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP 

有人能解释一下这两个变量CORE_PEER_GOSSIP_BOOTSTRAP & CORE_PEER_GOSSIP_EXTERNALENDPOINT 是如何工作的吗?如果节点数量为奇数,它们该如何配置。

非常感谢详细解释。

1个回答

31

流言协议可以在同一组织内的同级之间或不同组织内的同级之间使用。它总是针对特定频道进行范围限制。

1) 单个组织中同级之间的通信

  • 一个同级可能是领导者,连接到排序服务并向其组织中的其他同级传递块

  • 同级可以连接到其组织中的其他同级以获取丢失的块

2) 不同组织中同级之间的通信

  • 在使用私有数据功能时,v1.2使用流言协议在认可时间将私有数据分发给组织中的其他同级

  • 同级可以从其他组织的同级获取已经提交的丢失块

  • 同级可以在提交时间从其他组织的同级获取丢失的私有数据

为了使流言协议实际工作,它需要能够获取同一组织内同级的端点信息以及来自其他组织中的同级的信息。

CORE_PEER_GOSSIP_BOOTSTRAP 用于在组织内引导 gossip 协议。如果您使用 gossip 协议,通常需要配置组织内的所有节点,让它们指向一组初始的引导节点(您可以指定一个空格分隔的对等节点列表)。当然,节点也可以从不同的节点引导,但在这种情况下,您需要确保所有节点之间都有一个引导路径。组织内的节点通常会在其内部端点上进行通信(这意味着您不必公开组织中的所有节点)。当节点联系引导节点时,它会传递自己的端点信息,然后使用 gossip 协议将组织中所有节点的信息分发给组织中的所有节点。

为了使跨组织之间的节点通信,需要一些引导信息。在通道配置中,“锚定对等方”设置提供了初始的跨组织引导信息,这允许已加入通道的节点发现通道上的其他节点。但显然,一个组织中的节点最初只能知道属于该组织的锚定对等方。如果要将您的组织中的其他节点告诉其他组织,则需要设置CORE_PEER_GOSSIP_EXTERNALENDPOINT属性。如果未设置此属性,则有关该节点的端点信息不会广播到其他组织的节点,并且实际上 - 该节点仅为其所在组织所知。

感谢Gari提供如此详细的答案。在GOSSIP_BOOTSTRAP中,我需要指定一个对等节点的地址吗?还是可以提供其他对等节点地址的数组? - Akshay Sood
实际上,您可以指定一个逗号分隔的引导节点列表。我已经在上面编辑了我的答案。 - Gari Singh
@GariSingh 告诉我应该用逗号分隔。让我试试用空格。 - Debut Infotech
在多主机网络中,CORE_PEER_GOSSIP_EXTERNALENDPOINT 应该具有 IP:端口 的值。 - anjy
这要看情况。可能是 host:port 或者 IP:port ... 如果你使用 TLS,那么你的对等证书必须有一个与你指定的 host 和/或 IP 匹配的 SAN。 - Gari Singh
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接