admin管理员组

文章数量:1642217

Hyperledger 源码分析之 Fabric

Deliver,意味着客户端通过 gRPC 接口从 Ordering 服务获取数据(例如指定区块的数据)。

Orderer 节点收到请求消息,会首先交给 orderermon.server 包中 server 结构体的 Deliver(srv ab.AtomicBroadcast_DeliverServer) error 方法处理。该方法进一步调用 orderermon.deliver 包中 deliverServer 结构的 Handle(srv ab.AtomicBroadcast_DeliverServer) error 方法进行处理。

deliverServer 结构体十分重要,完成对 Deliver 请求的处理过程。

type deliverServer struct {
  
    sm SupportManager}func (ds *deliverServer) Handle(srv ab.AtomicBroadcast_DeliverServer) error

整体过程

整体处理过程如下图所示。


Handle(srv ab.AtomicBroadcast_DeliverServer) error 方法会开启一个循环来从 srv 中不断读取请求消息并进行处理,直到结束。

核心代码如下所示,包括提取消息和对消息进行处理两个步骤。

for {
  
    envelope, err := srv.Recv() // 从请求中提取一个 Envelope 消息
    ds.deliverBlocks(srv, envelope) // 对消息进行处理并答复,核心过程}

本文标签: 节点过程HyperledgerFabricdeliver