在Hyperledger Fabric中,也实现了Gossip数据传播协议。
在Fabric网络中,有以下三个主要功能使用到了Gossip协议:
1、管理节点和通道成员,检测离线节点。
2、保持通道中的所有节点账本数据一致性。
3、通过点对点的方式,迅速创建新节点账号数据。
Fabric 节点启动时(fabric.internal.peer.node.start.go),都会初始化一个GossipService,其主要功能是实现了如下的一些接口方法:
我们可以看到有Send/SendByCriteria/Gossip这三个方法发送Gossip消息的不同需求的接口,另外还有Accept提供接收Gossip消息的通道。Peer节点之间就是从这些接口进行Gossip协议消息通信的。
而在初始化GossipService 的构建方法 gossip.New 中,同时会初始化一个DiscoveryService:
这个Discovery接口主要实现如下一些接口方法,提供查询Peer节点,更新实现的meta、endpoint数据,获取活跃状态的成员节点等。从而实现管理节点和通道成员,检测离线节点。