Fabric v1.x Gossip协议的一些细节和传播原理

一、Gossip协议的功能

Fabric中需要在3个不同类型的节点间进行交易流 转,需要非常安全的、可靠的以及可扩展的传输协议,以确保数据的完整性和一致性,因此Fabric实现了Gossip数据传输协议。Gossip利用一种随机的方式将信息散播在整个网络中,与它名字的含义一样,类似于绯闻流言的传播。

Gossip协议的具体功能如下:

  • 维护和管理channel成员,发现新的peer节点,不断探测peer节点的状态,并更新membership;
  • channel内的peer节点间传输账本数据,peer会不断地接收其他peer传输数据的请求,peer节点收到新的账本数据的时候,会存到本地账本里,然后还要将账本数据传播给其他认识的peer节点;
  • 对于新加入的peer或账本状态落后的peer,可以通过点对点的状态传输,快速的获取账本数据。

二、Leader Peer

当有新的交易区块时,Leader Peer会去连接ordering service,拉取新的区块,同时将区块随机地传播给组织内的其他Committing peers,然后这些节点又会继续散播给其他Committing peers。
在一个组织内允许定义一个或多个Leader Peer。

Leader Election

Leader的选举包括静态(Static)方式和动态(Dynamic)方式:

  • Static:
    系统管理员手动将组织中地某个peer配置为Leader,一个组织内可以有一个或多个Leading peer,设置当前peer为Leader的方式如下所示:
peer:
# Gossip related configuration
gossip: useLeaderElection: false
orgLeader: true
  • Dynamic:
    peers执行一个leader选举过程来选择组织内的一名leader,动态选举产生的leader发送心跳消息给其他peers ,作为存活证据,配置示例如下所示:
peer:
	# Gossip related configuration
	gossip:
		useLeaderElection: true
		orgLeader: false
		election:
			leaderAliveThreshold: 10s

三、Anchor Peer

Anchor Peer被gossip用来确保不同组织的Peers互相认识,不同组织的Anchor peer间可以互相通信,那么组织内的成员就可以与Anchor peer通信,从而实现了不同组织Peer间的数据传播。Anchor Peer相当于不同组织的传播桥梁。

设置anchor peer的方式是发送一笔配置交易,因为要让别的组织知道自己组织的anchor peer是什么,这就需要广播给其他所有节点。

四、Gossip 消息传播原理

在线的peers为了表明自己的可用性,会不断地广播“alive”消息,其他peers也会收集这些“alive”消息,从而维护channel的成员关系。

当leader peer从ordering service拿到交易区块后,会传播给组织内其他Peers,这些Peers接收消息存到账本后,还会自动散发这些区块消息。每个peer还会不断地从channel上的其他peers询问状态,看是否有差异,有差异则通过P2P的方式拉取区块,以便快速地修复其自身账本状态。

Gossip协议是不能跨channel传播的,一个channel上的peers不能在其他任何channel上发送消息或共享信息。

发布了30 篇原创文章 · 获赞 3 · 访问量 5726

猜你喜欢

转载自blog.csdn.net/ice_fire_x/article/details/104407240