peer模块

peer模块是Fabric中最重要的模块,也是在Fabric系统使用最多的模块。peer模块在Fabric中被称为主节点模块,主要负责存储区块链数据、运行维护链码、提供对外付服务接口等作用。本节将详细介绍peer模块的命令行参数、配置方式,启动方式等功能。

1、命令行和常用参数

peer模块中常用的命令和参数如下所示:

blob.png

blob.png

2.peer的环境变量

配置文件和环境变量是设置peer启动参数的重要手段,它们之间的关系在本章开始部分已经介绍了。peer模块通过环境配置属性信息的示例如下所示:

blob.png

blob.png

3.peer模块的配置文件

peer的配置文件的默认文件名为croe.yaml,配置文件分为logging、peer、vm、chaincode、ledger这五大部分。各部分的详细含义如下所示。

(1)配置文件中logging相关的属性

logging节点定义了peer模块中所有模块的日志级别和日志格式,每个模块的日志级别可以根据业务的需求定义成不一样的格式:

blob.png

日志分为critical、error、warning、notice、info、debug这六个级别。

(2)peer节点相关的配置

peer节点定义了peer模块一般的配置信息:

blob.png

blob.png

blob.png

peer节点的选项比较多,下面将分类介绍。

第一类:通用属性

·id:peer节点的编号;

·networkId:peer节点的网络编号;

·listenAddress:peer节点的监听地址;

·chaincodeListenAddress:chaincode的监听地址;

·address:访问地址;

·addressAutoDetect:锚节点地址;

·gomaxprocs:最大有效数;

·fileSystemPath:区块等数据的存放路径;

·mspConfigPath:当前节点MSP文件的路径。

第二类:gossip

·bootstrap:启动节点后向哪些节点发起gossip连接,以加入网络。这些节点与本地节点需要属于同一组织;

·endpoint:本节点在同一组织内的gossip id,默认为peer.address;

·useLeaderElection:用户组织节点的生成方式;

·orgLeader:当前节点是否为用户组织节点;

·maxBlockCoimtToStore:保存到内存中的区块个数上限,超过则丢弃;

·maxPropagationBurstLatency:保存消息的最大时间,超过则触发转发给其他节点;

·maxPropagationBurstSize:保存的最大消息个数,超过则触发转发给其他节点;

·propagateIterations:消息转发的次数;

·propagatePeerNum:推送消息给指定个数的节点;

·pulllnterval:拉取消息的时间间隔;

·pullPeerNum:从指定个数的节点拉取消息;

·requestStatelnfoInterval:从节点拉取状态信息(Statelnfo)消息的间隔;

·publishStatelnfoInterval:向其他节点推送状态信息消息的间隔;

·publishCertPeriod:启动后,在心跳消息中嵌入证书的等待时间;

·statelnfoRetentionlnterval:状态信息消息的超时时间;

·skipBlockVerification:是否不对区块消息进行校验,默认为false;

·dialTimeout:gRPC连接拨号的超时时间;

·connTimeout:建立连接的超时时间;

·recvBuffSize:收取消息的缓冲大小;

·sendBuffSize:发送消息的缓冲大小;

·digestWaitTime:处理摘要数据的等待时间;

·requestWaitTime:处理nonce数据的等待时间;

·responseWaitTime:终止拉取数据处理的等待时间。

·aliveTimelnterval:定期发送Alive心跳消息的时间间隔;

·aliveExpirationTimeout:Alive心跳消息的超时时间;

·reconnectlnterval:断线后重连的时间间隔;

·extemalEndpoint:节点被组织外节点感知时的地址,默认为空,代表不被其他组织所感知。

第三类:events

·address:事件监听器地址;

·buffersize:事件消息缓存数,超过该值会被阻塞;

·timeout:队列阻塞的超时时间。

第四类:tls

·enabled:是否激活tls;

·cert:服务身份验证证书;

·key:服务的私钥文件;

·rootcert:根服务器证书;

·serverhostoverride:tls握手时候制定服务名称。

第五类:BCCSPBCCSP

主要配置加密和解密类的相关信息,具体可以参考相关文档。

(3)vm节点相关的配置vm节点定义peer和docker交互的相关配置如下:

blob.png

blob.png

vm节点配置项的详细注释如下所示:

·endpoint:docker服务器Daemon的地址,默认取端口的套接字;

·tls:启动docker的tls证书;

·attachStdout:是否将docker消息绑定到指定的输出;

·NetworkMode:chaincode容器的网络命名模式;

·Dns:是否启用域名服务器;

·LogConfig:docker容器的日志配置信息;

·Type:日志类型;

·Memory:占用内存。

4.配置文件中chaincode节点相关的配置

chaincode定义了链码相关的配置,如下所示:

blob.png

blob.png

chaincode节点配置项的详细注释如下所示:

·peerAddress:chaincode中的peer服务器地址;

·builder:本地的编译环境为docker镜像;

·golang:Go语言版的chaincode的基础镜像;

·car:car格式的chaincode生成镜文件时的基础镜像;

·java:Java语言版的chaincode的基础镜像;

·node:Node语言版的chaincode的基础镜像;

·startuptimeout:启动chaincode容器时的超时时间,超过这个时间认为启动失败;

·executetimeout:执行Invoke和Init方法时的超时时间,超过这个时间认为执行失败;

·mode:chaincode的运行模式,net为网络模式,dev为开发模式,dev模式下,可以在容器外运行chaincode;

·keepalive:peer节点和chaincode直接的心跳时间;

·system:系统chaincode的开关;

·logging:chaincode的日志级别。

5.配置文件中ledger节点相关的配置

ledger节点定义了账本相关的配置,如下所示:

blob.png

ledger节点配置项的详细注释如下所示:

·state:状态存储数据库的配置;

·stateDatabase:数据库类型,目前支持goleveldb和CouchDB。

·couchDBConfig:stateDatabase的类型为CouchDB,CouchDB相关的参数;

·enableHistoryDatabase:是否保存状态的历史数据库,生产系统中建议开启。

868区块链学习网为您整理《peer模块》仅供参考。