start.go

负责 peer node start 命令。

最重要的是 func serve(args []string) error 函数,启动一个节点服务,主要是启动各个 GRPC 的服务端。包括 EventsServer 服务、chaincodesupport 服务、admin 服务、endorser 服务、gossip 服务。

  • EventsServer 服务(events.producer.EventsServer):提供 Chat GRPC 调用。

  • ChaincodeSupport(core.chaincode.ChaincodeSupport)服务:提供 Execute、Launch、Register、Stop 等方法。

  • ServerAdmin 服务(core.ServerAdmin):提供 GetStatus、StartServer、StopServer、GetModuleLogLevel、SetModuleLogLevel 等方法。

  • Endorser 服务(core.endorser.Endorser):提供 ProcessProposal 方法。

  • GossipService 服务(gossip.service.GossipService):提供 NewConfigEventer、InitializeChannel、GetBlock、AddPayload 方法。

startCmd() 方法调用 serve() 方法。

整体流程如下图所示。

peer node start 整体流程

配置读取和缓存

首先是进行配置管理,根据配置信息和一些计算来构建 cache 结构,探测节点信息等。主要调用 core.peer 包来实现。

创建 eventHub 服务

eventHub 服务监听到 7053 端口,仅在 VP 节点上打开。

调用 createEventHubServer 方法实现,主要过程为:

创建 EventHub 服务,通过调用 createEventHubServer() 方法来实现,该服务也是 grpc,只有 vp 节点才开启。

eventHub 服务支持的方法为 Chat。

创建和注册 grpc 服务

创建 gprc 服务,并注册上 deliver、chaincode、admin、endorser、gossip 等服务,并初始化注册 chainless 系统 chaincode 和创建初始区块。

其中,deliver服务支持方法为

chaincode 服务支持方法为

admin 服务支持方法为

endorser 服务支持方法为

gossip 服务支持方法为

启动 grpc 服务和 eventHub 服务

之后是启动 grpc 服务,监听到 7051 端口。

启动 eventHub 服务。

最后,如果需要 profiling,还会打开监听服务。

Last updated

Was this helpful?