8.2 Hyperledger Fabric中数据同步的实现

目标

  1. Hyperledger Fabric 中数据传输的实现

任务实现

Hyperledger Fabric 是一个由N个节点组成的分布式网络,且 HyperLedger Fabric 通过把网络内的节点分解为执行交易(背书和提交)节点和交易排序节点,利用这些分解后的节点来优化区块链网络性能及安全性和可扩展性。但是分解之后网络需要一个安全、可靠、可扩展的数据分发协议来保证数据的完整性和一致性。为了满足这些要求,Hyperledger Fabric 中使用了 Gossip 数据分发协议

8.2.1 Hyperledger Fabric中的Gossip

Fabric 中 的各个 Peer 节点之间利用 Gossip 协议来完成区块广播以及状态同步的过程。Gossip 消息是连续的,通道上的每个 Peer 节点都不断地接收来自多个节点已完成一致性的区块数据。每条传输的 Gossip 消息都有相应的签名,从而由拜占庭参与者发送的伪造消息很容易地识别来,并且可以防止将消息分发给不在同一通道中的其它节点。受到延迟、网络分区或其他导致区块丢失的原因影响的节点,最终将通过联系已经拥有这些缺失区块的节点,与当前账本状态进行同步。

在 Hyperledger Fabric 网络中基于 Gossip 的数据传播协议在 Fabric 网络上执行三个主要功能:

  1. 通过不断识别可用的成员节点并最终监测节点离线状态的方式,对节点的发现和通道中的成员进行管理。
  2. 将分类帐本数据传播到通道上的所有节点。任何节点中如有缺失区块都可以通过从通道中其它节点复制正确的数据来标识缺失的区块并同步自身。
  3. 在通道上的所有节点上同步分类帐状态。通过允许点对点状态传输更新账本数据,保证新连接的节点以最快的速度实现数据同步。

基于 gossip 的广播由节点接收来自通道内其他节点的消息,然后将这些消息转发给随机选择的且在同一通道内的若干个邻居节点,这种循环不断重复,使通道中所有的成员节点的账本和状态信息不断保持与当前的最新状态同步。对于新区块的传播,通道上的 Leader Peer 节点从 Ordering 服务中提取数据,并向随机选择的邻居节点发起 Gossip 传播。

随机选择的邻居节点数量可以通过配置文件进行配置声明。节点也可以使用拉取机制,而不是等待消息的传递。

在这里插入图片描述

正如上图所示,客户端应用程序将交易提案请求提交给背书节点(Endorse Peer),背书节点处理并背书签名后返回响应,然后提交给 Ordering 服务进行排序,排序服务达成共识后生成区块,通过 deliver()广播给各个组织中通过选举方式选择的作为代表能够连接到排序服务的 Leader Peer 节点,Leader Peer 节点随机选择N个节点将接收到的区块进行分发。另外,为了保持数据同步,每个节点会在后台周期性地与其它随机的N个节点的数据进行比较,以保持区块数据状态的同步。

Leader节点选举

在 Hyperledger Fabric 网络中,每一个组织都会通过领导选举机制选择一个节点(Leader Peer),该节点将保持与 Ordering 服务的连接,并在其所在组织的节点之间分发从 Ordering 服务节点接收到的新区块。利用领导人选举为系统提供了有效利用 Ordering 服务带宽的能力。在 Hyperledger Fabric 中实现领导人选举有两种方式:

  1. **静态选举:**由系统管理员手动配置实现,指定组织中的一个 peer 节点作为领导节点代表组织与 Ordering 服务建立连接。
  2. **动态选举:**通过执行领导人选举程序,动态从组织中选择一个 peer 节点成为领导者
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值