Fabric区块链Gossip机制解读

Hyperledger Fabric是一个分布式区块链网络,每个节点都存有共享账本的一个副本,该副本保存了所有交易的确定性历史记录。当新的交易发生时,这些交易必须扩散到整个Hyperledger Fabric网络中,以便使账本的所有副本保持一致。本文将介绍Gossip协议机制的原理并说明Hyperledger Fabric如何使用Gossip机制来保证所有peer节点的数据同步。

Hyperledger Fabric相关开发教程:

从大的层面讲,在Hyperledger Fabric中整个交易处理流程如下:

  • 新交易被提交给排序节点
  • 排序节点创建新的区块,其中包含了新产生的交易
  • 排序节点分发区块给所有的对等节点

最后一步,分发,就是gossip协议发挥作用的环节。即使在一个仅包含少量成员机构的Hyperledger Fabric网络中,也可能会包含大量的对等节点。例如,一个重度使用IoT设备的Hyperledger Fabric网络可能就需要很多Peer节点来将这些IoT设备接入区块链网络。更进一步讲,大范围网络中的peer节点连接可能是间歇性的,有些peer节点不是总会被排序节点访问到。另外也没必要要求排序节点将新区块
分发给每个peer节点,而且这一要求在有些情况下也是不可能满足的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BBXnDWjL-1576125458897)(hyperledger-fabric-gossip/gossip-theory.png)]

Gossip:闲聊; 八卦; 小道消息;

实际上在Hyperledger Fabric的排序节点分发区块时,它只会把新区块分发给每个机构中的主导peer节点,然后经过gossip过程,这些peer节点自己完成新区块在彼此之间的扩散:

  • 某个peer节点有一个需要散播给其他peer节点的消息。例如,主导的peer节点
    有一个新的区块。
  • 该peer节点将消息发送给(随机选择的)预定数量的其他peer节点
  • 收到消息的peer节点再将消息发送给(随机选择的)预定数量的其他peer节点
  • 如此不断反复,直到每个peer节点都收到消息。

上面的过程被称为广播,这一过程被应用于Fabric的gossip系统来向全体peer成员分发各种类型的消息。

1、网络成员gossip流程

Gossip协议的一个核心组件,就是每个peer都会转发消息给网络中一组随机选择的节点。这隐含了每个peer节点都了解网络中有哪些peer节点因此才可以进行随机选择。

在Fabric中,每个peer节点都会周期性的广播消息来表示自身的存活并且已经接入网络。每个peer节点都会维护一个清单来记录网络上的所有peer节点 - 哪些peer是存活的,哪些peer是死翘翘的。

  • 当Peer A收到来自Peer B的alive消息,它就会将Peer B标注为alive。对于Peer A来说,Peer B就是网络中的一个成员
  • 如果过了一段时间,Peer SA不在收到来自Peer B的alive消息,它就会 将Peer B标注为dead。对于Peer A来说,Peer B就不再是网络中的一员了。

假设Peer B并没有真的死翘翘,Peer A 会周期性地尝试连接标记为dead的Peer节点以检查其是否还存活。例如,有可能是因为网络问题或其他Peer节点的故障导致了Peer B的alive消息无法到达Peer A,因此当Peer A直接联系Peer B时,它就可以确定Peer B的真实状态。

扫描二维码关注公众号,回复: 8876254 查看本文章

上面描述的过程仅当在peer节点有一组可供发送alive消息的peer节点清单时才可以正常工作。因此每个peer节点在启动引导时都有一个启动引导节点集来提供初始的peer节点清单。

每个peer节点会签名其发送的alive消息,这意味着一个坏家伙不能伪造消息来愚弄其他网络成员。这个坏家伙能做的也就是不转发alive消息。只要其他peer节点继续转发alive消息,这就不是什么大问题。

2、数据扩散gossip流程

正如前面所描述的,在Hyperledger Fabric网络中数据扩散的基本原理很简单。每个peer节点只需将新的数据转发给一组随机选择的peer节点,最终就可以完成新数据在整个网络中的扩散。这一过程被称为广播,以一种基于推送的信息传递方案。

然而,如果一个peer节点从网络断开并在稍后重连,它可能就会错过广播过程。为了跟上网络中其他成员的数据进度,这个节点需要一种基于拉取的机制来请求
其缺失的数据。在Hyperledger Fabric中,peer节点间会周期性地交换网络成员数据和账本数据,这是的peer节点可以保持更新状态,即使其错过某个广播过程。

3、Hyperledger Fabric中的Gossip应用小结

Hyperledger Fabric在peer节点之间使用Gossip作为一种可伸缩的容错机制来保证所有peer节点上的账本副本保持同步。使用gossip有效降低了排序节点的压力,因为排序节点只需要将区块分发给每个机构中的主导节点,同时这也让peer节点即使在断线重连的情况下也能跟得上整个网络的状态更新。


原文链接:Hyperledger Fabric Gossip原理解析 - 汇智网

发布了301 篇原创文章 · 获赞 155 · 访问量 47万+

猜你喜欢

转载自blog.csdn.net/shebao3333/article/details/103507002