二维码

10.2 Peer配置剖析 - 数据结构 - 机器学习

1654 人阅读 | 时间:2021年01月15日 01:18
10.2 Peer配置剖析 - 数据结构 - 机器学习 #daohang ul li t,.reed .riqi,a.shangg,a.xiatt,a.shangg:hover,a.xiatt:hover,a.shang,a.xiat,a.shang:hover,a.xiat:hover,.reed-pinglun-anniu,span.now-page,#daohangs-around,#caidan-tubiao,#daohangs,#daohangs li,#btnPost{background-color:#D10B04;} .dinglanyou1 h3{border-bottom:3px solid #D10B04;} #dibuer{border-top:2px solid #D10B04;}.cebianlan .rongqi h3{border-bottom:1px solid #D10B04;} #edtSearch{border:1px solid #D10B04;} #daohang .zuo ul li{border-right:1px solid #;} #daohang ul li t a{border-top:1px solid #;border-right:1px solid #D10B04;} #daohang ul li t a:hover{border-right:1px solid #;} #daohang .you ul li a:hover,#daohang .zuo ul li a:hover,.reed-pinglun-anniu:hover{background-color:#;} a:hover,.reed h6 a:hover,#dibuer a:hover,.reed .riqiding,.cebianlan .rongqi li a:hover,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.shu a,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.huifuliuyan a:hover,.reed-biaoti h6 span{color:#D10B04;} .reed .kan a{color:#0A0AF5;}.reed .kan a:hover{color:#D10101;} @media screen and (max-width:1492px){a.shang,a.xiat{background:none;} a.xiat:hover,a.shang:hover{background-color:#f9f9f9;background-image:none;text-decoration:none;}} var _hmt = _hmt || [];(function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s);})(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?2d748c9763cfc72fb7d1ccab29f0770d"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?f6d451f3f1be23f3abf240c64c469c1b"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();

当前位置:首页 » 区块链精品文章 » 正文

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646201", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646162", container: s }); })();

10.2 Peer配置剖析

1518 人参与  2018年09月29日 15:18  分类 : 区块链精品文章  评论

当Peer节点作为服务端启动时,会按照优先级从高到低的顺序依次尝试从命令行参数、环境变量或配置文件中读取配置信息。

当从环境变量中读入配置时,需要以CORE_前缀开头,例如配置文件中的peer.id项,对应到环境变量CORE_PEER_ID。

Peer节点默认的配置文件读取路径为$FABRIC_CFG_PATH/core.yaml;如果没找到,则尝试查找当前目录下的./core.yaml文件;如果还没有找到,则尝试查找默认的/etc/hyperledger/fabric/core.yaml文件。

Fabric代码中提供了一些示例的core.yaml配置文件(如sampleconfig/core.yaml),可以作为参考。

在结构上,core.yaml文件中一般包括logging、peer、vm、chaincode、ledger五大部分,下面分别予以讲解。

10.2.1 logging部分

该部分主要定义Peer服务的日志记录级别和输出日志消息的格式。

支持日志级别包括critical、error、warning、notice、info、debug等。一般情况下,级别越低,则输出的调试信息越丰富。

除了可以设置全局的默认值为info外,还可以细致指定一些模块(cauthdsl、gossip、ledger、msp、policies、grpc)的输出日志级别。

具体各个配置项的功能也可以参看下面示例的注释部分:


logging:
   peer:       info # 全局的默认日志级别

   # 模块的日志级别,覆盖全局配置
   cauthdsl:   warning
   gossip:     warning
   ledger:     info
   msp:        warning
   policies:   warning
   grpc:       error

   # 输出日志的格式
   format: '%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{short-func}
       -> %{level:.4s} %{id:03x}%{color:reset} %{message}'


10.2.2 peer部分

peer部分包括了许多跟服务直接相关的核心配置,内容也比较多,包括通用配置、gossip、events、tls等多个配置部分,下面分别介绍。

1.通用配置

这里包括一些比较重要的配置信息,主要包括:

·id:Peer在网络中的ID信息,用于识别不同的节点;

·networkId:网络自身的ID,逻辑上可以通过ID指定多个隔离的网络;

·listenAddress:服务监听的本地地址,当本地有多个网络接口时候可以通过该配置指定仅监听在某接口上,默认为在本地所有的网络接口(0.0.0.0)上进行监听,服务端口为7051;

·chaincodeListenAddress:链码容器连接的监听地址,不指定的话则采用listenAddress;由于链码容器连接目前不支持双向TLS认证,生产环境中建议指定为不同地址;

·address:服务对外的地址。特别是当服务运行在NAT设备后时,该配置可以指定服务对外宣称的可访问地址;

·addressAutoDetect:是否自动探测服务地址,当Peer服务运行环境的地址是动态时,该配置可以进行自动探测,探测将内部地址作为服务地址;默认情况下是关闭,注意启用TLS时最好关闭,以免跟指定的域名冲突造成认证失败;

·gomaxprocs:配置运行该Go应用的最大进程数(runtime.GOMAXPROCS(n)),默认-1表示使用系统配置,不进行修改;

·fileSystemPath:本地数据存放路径,包括账本、链码等,一般指定为/var/hyperledger/production;

·BCCSP:密码库相关配置,包括算法、文件路径等;

·mspConfigPath:MSP目录所在的路径,可以为绝对路径,或相对配置目录的路径,一般建议为/etc/hyperledger/fabric/msp;

·localMspId:Peer所关联的MSP的ID,一般为组织单位名称,需要与联盟配置中的名称一致;

·profile:是否启用Go自带的profiling支持进行调试,生产环境下建议关闭。

具体各个配置项的功能也可以参看下面示例的注释部分:


peer:
   id: peer0 # 节点ID
   networkId: business # 网络的ID
   listenAddress: 0.0.0.0:7051 # 节点在监听的本地网络接口地址
   chaincodeListenAddress: 0.0.0.0:7052 #链码容器连接时的监听地址
   address: 0.0.0.0:7051  # 节点对外的服务地址
   addressAutoDetect: false # 是否自动探测对外服务地址

   gomaxprocs: -1 # Go进程数限制
   fileSystemPath: /var/hyperledger/production # 本地数据存放路径

   BCCSP: # 加密库的配置
       Default: SW
       SW:
           Hash: SHA2 # Hash算法类型,目前仅支持SHA2
           Security: 256
           FileKeyStore: # 本地私钥文件路径,默认指向<mspConfigPath>/keystore
               KeyStore:

   mspConfigPath: msp # MSP的本地路径
   localMspId: DEFAULT # Peer所关联的MSP的ID

   profile: # 是否启用Go自带的profiling支持进行调试
       enabled:     false
       listenAddress: 0.0.0.0:6060


2.gossip配置

gossip配置主要是负责节点之间通过gossip消息进行P2P通信。主要包括如下几部分的配置项。

(1)启动和连接参数

启动和连接参数如下:

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

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

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

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

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

·connTimeout:建立连接的超时;

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

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

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

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

(2)消息相关

主要包括跟Gossip消息相关的配置,如下所示:

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

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

·propagateIterations:消息转发的次数;

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

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

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

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

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

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

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

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

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

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

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

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

(3)选举相关

主要包括Leader节点选举相关的配置,如下所示:

·useLeaderElection:是否允许节点之间动态进行代表(leader)节点的选举,默认为禁止;

·orgLeader:本节点是否指定为组织的代表节点。与useLeaderElection不能同时指定为true;

·election.startupGracePeriod:代表成员选举等待的时间;

·election.membershipSampleInterval:检查成员稳定性的采样间隔;

·election.leaderAliveThreshold:Peer尝试进行选举的等待超时;

·election.leaderElectionDuration:Peer宣布自己为代表节点的等待时间。

完整的peer.gossip配置如下所示:


peer:
   gossip:
       bootstrap: 127.0.0.1:7051 # 启动节点后所进行gossip连接的初始节点
       useLeaderElection: false # 是否动态选举代表节点
       orgLeader: true # 是否指定本节点为组织代表节点
       endpoint: # 本节点在组织内的gossip id

       maxBlockCountToStore: 100 # 保存到内存中的区块个数上限
       maxPropagationBurstLatency: 10ms # 保存消息的最大时间,超过则触发转发给其
                                             他节点
       maxPropagationBurstSize: 10 # 保存的最大消息个数,超过则触发转发给其他节点

       propagateIterations: 1 # 消息转发的次数
       propagatePeerNum: 3 # 推送消息给指定个数的节点
       pullInterval: 4s # 拉取消息的时间间隔

       pullPeerNum: 3 # 从指定个数的节点拉取消息
       requestStateInfoInterval: 4s # 从节点拉取状态信息(StateInfo)消息的间隔
       publishStateInfoInterval: 4s # 向其他节点推动状态信息消息的间隔
       stateInfoRetentionInterval: # 状态信息消息的超时时间
       publishCertPeriod: 10s # 启动后在心跳消息中包括证书的等待时间
       skipBlockVerification: false # 是否不对区块消息进行校验,默认为false
       dialTimeout: 3s # gRPC 连接拨号的超时
       connTimeout: 2s # 建立连接的超时
       recvBuffSize: 20 # 收取消息的缓冲大小
       sendBuffSize: 200 # 发送消息的缓冲大小
       digestWaitTime: 1s # 处理摘要数据的等待时间
       requestWaitTime: 1s # 处理nonce数据的等待时间
       responseWaitTime: 2s # 终止拉取数据处理的等待时间
       aliveTimeInterval: 5s # 定期发送Alive心跳消息的时间间隔
       aliveExpirationTimeout: 25s # Alive心跳消息的超时时间
       reconnectInterval: 25s # 断线后重连的时间间隔
       externalEndpoint: # 节点被组织外节点感知时的地址

       election:
           startupGracePeriod: 15s # 代表成员选举等待的时间
           membershipSampleInterval: 1s # 检查成员稳定性的采样间隔
           leaderAliveThreshold: 10s # Peer尝试进行选举的等待超时
           leaderElectionDuration: 5s # Peer宣布自己为代表节点的等待时间


3.events配置

events服务配置主要包括如下配置项:

·address:本地监听的地址,默认在所有网络接口上进行监听,服务端口为7053;

·buffersize:最大进行缓冲的消息数,超过则向缓冲中发送事件消息会被阻塞;

·timeout:当缓冲已满情况下,往缓冲中发送消息的超时。小于0的值,表示直接丢弃消息;0值表示阻塞直到发出;大于0的值表示阻塞尝试直到超时,超时后还不能发出则丢弃。

示例配置如下所示:


peer:
   events:
       address: 0.0.0.0:7053 # 本地服务监听地址
       buffersize: 100
       timeout: 10ms


4.tls配置

tls部分配置相对简单,当tls检查启用时,指定身份验证证书、签名私钥、信任的根CA证书,以及校验的主机名。

具体各个配置项的功能也可以参见下面示例的注释部分:


peer:
   tls:
       enabled:  false # 默认不开启TLS验证
       cert:
           file: tls/server.crt # 本服务的身份验证证书,公开可见,访问者通过该证书进
                                           行验证
       key:
           file: tls/server.key # 本服务的签名私钥
       rootcert:
           file: tls/ca.crt # 信任的根CA的证书

       serverhostoverride: # 是否指定进行TLS握手时的主机名称


10.2.3 vm部分

对链码运行环境的配置,目前主要支持Docker容器。主要包括如下配置项:

·endpoint:Docker Daemon地址,默认是本地套接字;

·docker.tls:Docker Daemon启用TLS时的相关证书配置,包括信任的根CA证书、服务身份证书、签名私钥等;

·docker.attachStdout:是否启用绑定到标准输出,启用后链码容器的输出消息会绑定到标准输出,方便进行调试使用;

·docker.hostConfig:Docker相关的主机配置,包括网络配置、日志、内存等。这些配置会在启动链码容器时候进行使用。更多Docker配置可以查看Docker相关的技术文档。

具体各个配置项的功能也可以参见下面示例的注释部分:


vm:
   endpoint: unix:///var/run/docker.sock # Docker Daemon地址

   docker:
       tls: # Docker Daemon启用TLS时相关证书配置
           enabled: false
           ca:
               file: docker/ca.crt
           cert:
               file: docker/tls.crt
           key:
               file: docker/tls.key

       attachStdout: false # 是否启用连接到标准输出

       hostConfig: # Docker相关的主机配置,包括网络配置、日志、内存等
           NetworkMode: host # host意味着链码容器直接使用所在主机的网络命名空间
           Dns:
               # - 192.168.0.1
           LogConfig:
               Type: json-file
               Config:
                   max-size: "50m"
                   max-file: "5"
           Memory: 2147483648


10.2.4 chaincode部分

跟链码相关的配置选项主要包括如下这些:

·id:记录链码相关信息,包括路径、名称、版本等,该信息会以标签形式写到链码容器;

·builder:通用的本地编译环境,是一个Docker镜像;

·golang:Go语言的链码部署生成镜像的基础Docker镜像;

·car:car格式的链码部署生成镜像的基础Docker镜像;

·java:生成Java链码容器时候的基础镜像信息;

·startuptimeout:启动链码容器超时,等待超时时间后还没有收到链码端的注册消息,则认为启动失败;

·executetimeout:invoke和initialize命令执行超时;

·deploytimeout:部署链码的命令执行超时;

·mode:执行链码的模式。dev允许本地直接运行链码,方便调试;net意味着在容器中运行链码;

·keepalive:Peer和链码之间的心跳超时,小于或等于0意味着关闭;

·system:系统链码的相关配置;

·logging:链码容器日志相关配置。

具体各个配置项的功能也可以参见下面示例的注释部分:


chaincode:
   id: # 动态标记链码的信息,该信息会以标签形式写到链码容器
       path:
       name:

   # 通用的本地编译环境,是一个Docker镜像
   builder: $(DOCKER_NS)/fabric-ccenv:$(ARCH)-$(PROJECT_VERSION)

   golang: # Go语言的链码部署生成镜像的基础Docker镜像
       runtime: $(BASE_DOCKER_NS)/fabric-baseos:$(ARCH)-$(BASE_VERSION)
   car: # car格式的链码部署生成镜像的基础Docker镜像
       runtime: $(BASE_DOCKER_NS)/fabric-baseos:$(ARCH)-$(BASE_VERSION)
   java: # 生成Java链码容器时候的基础镜像信息
       Dockerfile:  |
           from $(DOCKER_NS)/fabric-javaenv:$(ARCH)-$(PROJECT_VERSION)

   startuptimeout: 300s # 启动链码容器的超时
   executetimeout: 30s # invoke和initialize命令执行超时
   deploytimeout: 30s # 部署链码的命令执行超时

   mode: net # 执行链码的模式

   keepalive: 0 # Peer和链码之间的心跳超时,小于或等于0意味着关闭

   system: # 系统链码的配置
       cscc: enable
       lscc: enable
       escc: enable
       vscc: enable
       qscc: enable

   logging: # 链码容器日志相关配置
     level:  info
     shim:   warning
     format: '%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{short-
       func} -> %{level:.4s} %{id:03x}%{color:reset} %{message}'


10.2.5 ledger部分

账本相关的配置包括如下选项:

·blockchain:设置系统区块链的整体配置,后面可能会丢弃;

·state:状态数据库的相关配置信息,包括类型(目前支持goleveldb和couchdb,前者轻量级性能高,后者支持复杂格式的查询)、数据库连接信息、查询最大返回记录数等;

·history:是否用goleveldb来记录键值历史,默认开启。

具体各个配置项的功能也可以参见下面示例的注释部分:


ledger:

   blockchain:

   state: # 状态数据库配置
       stateDatabase: goleveldb # 状态数据库类型
       couchDBConfig: # 如果启用 couchdb 数据库,配置连接信息
           couchDBAddress: 127.0.0.1:5984
           username:
           password:
           maxRetries: 3 # 出错后重试次数
           maxRetriesOnStartup: 10 # 启动出错的重试次数
           requestTimeout: 35s # 请求超时
           queryLimit: 10000 # 每个查询的最大返回记录数

   history:
       enableHistoryDatabase: true # 是否启用历史数据库



来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=921

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();
window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdPic":"","bdStyle":"0","bdSize":"16"},"share":{},"image":{"viewList":["qzone","tsina","tqq","renren","weixin"],"viewText":"分享到:","viewSize":"16"},"selectShare":{"bdContainerClass":null,"bdSelectMiniList":["qzone","tsina","tqq","renren","weixin"]}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];
区块链是什么  

微信号:qq444848023    QQ号:444848023

加入【我是码农】QQ群:864689844(加群验证:我是码农)

<< 上一篇 下一篇 >>
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646186", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646175", container: s }); })();
搜索

网站分类

标签列表

最近发表

    (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https'){ bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else{ bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();

全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试

var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!

jQuery(document).ready(function($){ /* prepend menu icon */ $('#daohangs-around').prepend('
'); /* toggle nav */ $("#caidan-tubiao").on("click", function(){ $("#daohangs").slideToggle(); $(this).toggleClass("active"); }); });

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任 来源:ZhiKuGroup博客,欢迎分享。

评论专区
  • 昵 称必填
  • 邮 箱选填
  • 网 址选填
◎已有 0 人评论
搜索
作者介绍
30天热门
×
×
关闭广告
关闭广告
本站会员尊享VIP特权,现在就加入我们吧!登录注册×
»
会员登录
新用户注册
×
会员注册
已有账号登录
×