Fabric基础配置文件解析(二)

  上一篇博客分析了crypto-config配置文件的主要内容和各个属性的意义,现在我们来看一看更加复杂的configtx.yaml文件,官方给的模板文件很长,注释很多,这里我就不粘贴内容了,直接拿出一个实际的配置过的文件来分析一下(可以先看分析回头再看这段配置代码):

Profiles:
  OrdererGenesis:     # 网络启动时,必须首先创建Orderer系统通道
    Policies:
      Readers:
        Type: ImplicitMeta
        Rule: ANY Readers
      Writers:
        Type: ImplicitMeta
        Rule: ANY Writers
      Admins:
        Type: ImplicitMeta
        Rule: MAJORITY Admins
    Capabilities:
      V1_3: true
    Orderer:                    # orderer信息
      OrdererType: kafka      # 指定启用的排序算法
      Addresses:              # 提供服务的地址
      - orderer0.1243574274jyworderer:7050
      BatchTimeout: 1s        # 区块生成超时时间
      BatchSize:
        MaxMessageCount: 10   # 区块消息数量
        AbsoluteMaxBytes: 99 MB # 区块绝对最大字节数
        PreferredMaxBytes: 512 KB # 一个区块的建议字节数,如果一个交易消息的大小超过了这个值, 就会被放入另外一个更大的区块中
      Kafka:
        Brokers:              # kafka的 brokens 服务地址 允许有多个
        - kafka0.1243574274jywkafka:9092
        - kafka1.1243574274jywkafka:9092
        - kafka2.1243574274jywkafka:9092
        - kafka3.1243574274jywkafka:9092
      EtcdRaft:
        Consenters: []
      Policies:
        Readers:
          Type: ImplicitMeta
          Rule: ANY Readers
        Writers:
          Type: ImplicitMeta
          Rule: ANY Writers
        Admins:
          Type: ImplicitMeta
          Rule: MAJORITY Admins
        BlockValidation:
          Type: ImplicitMeta
          Rule: ANY Writers
      Organizations:
      - Name: Orderer         # 组织名称
        ID: OrdererMSP        # MSP ID
        MSPDir: /data/HduFabric/baasmanager/baas-nfsshared/baas-artifacts/1243574274/jyw/crypto-config/ordererOrganizations/1243574274jyworderer/msp # msp目录
        Policies:
          Readers:
            Type: Signature
            Rule: OR('OrdererMSP.member')
          Writers:
            Type: Signature
            Rule: OR('OrdererMSP.member')
          Admins:
            Type: Signature
            Rule: OR('OrdererMSP.admin')
        AnchorPeers: []       #该组织的锚节点
      Capabilities:
        V1_1: true
    Consortiums:                # 以上orderer组织所服务的联盟信息
      SampleConsortium:
        Organizations:
        - Name: O1
          ID: O1MSP
          MSPDir: /data/HduFabric/baasmanager/baas-nfsshared/baas-artifacts/1243574274/jyw/crypto-config/peerOrganizations/1243574274jywo1/msp
          Policies:
            Readers:
              Type: Signature
              Rule: OR('O1MSP.admin', 'O1MSP.peer', 'O1MSP.client')
            Writers:
              Type: Signature
              Rule: OR('O1MSP.admin', 'O1MSP.client')
            Admins:
              Type: Signature
              Rule: OR('O1MSP.admin')
          AnchorPeers:
          - Host: peer0.1243574274jywo1
            Port: 7051
        - Name: O2
          ID: O2MSP
          MSPDir: /data/HduFabric/baasmanager/baas-nfsshared/baas-artifacts/1243574274/jyw/crypto-config/peerOrganizations/1243574274jywo2/msp
          Policies:
            Readers:
              Type: Signature
              Rule: OR('O2MSP.admin', 'O2MSP.peer', 'O2MSP.client')
            Writers:
              Type: Signature
              Rule: OR('O2MSP.admin', 'O2MSP.client')
            Admins:
              Type: Signature
              Rule: OR('O2MSP.admin')
          AnchorPeers:
          - Host: peer0.1243574274jywo2
            Port: 7051
  OrgsChannel:        # 应用通道模板
    Consortium: SampleConsortium    # 该应用通道所关联联盟的名称
    Application:
      Policies:
        Readers:
          Type: ImplicitMeta
          Rule: ANY Readers
        Writers:
          Type: ImplicitMeta
          Rule: ANY Writers
        Admins:
          Type: ImplicitMeta
          Rule: MAJORITY Admins
      Organizations:            # 组织机构配置
      - Name: O1                # orderer组织名字
        ID: O1MSP               # orderer组织ID
        MSPDir: /data/HduFabric/baasmanager/baas-nfsshared/baas-artifacts/1243574274/jyw/crypto-config/peerOrganizations/1243574274jywo1/msp
        Policies:
          Readers:
            Type: Signature
            Rule: OR('O1MSP.admin', 'O1MSP.peer', 'O1MSP.client')
          Writers:
            Type: Signature
            Rule: OR('O1MSP.admin', 'O1MSP.client')
          Admins:
            Type: Signature
            Rule: OR('O1MSP.admin')
        AnchorPeers:            # 配置锚节点
        - Host: peer0.1243574274jywo1
          Port: 7051
      - Name: O2
        ID: O2MSP
        MSPDir: /data/HduFabric/baasmanager/baas-nfsshared/baas-artifacts/1243574274/jyw/crypto-config/peerOrganizations/1243574274jywo2/msp
        Policies:
          Readers:
            Type: Signature
            Rule: OR('O2MSP.admin', 'O2MSP.peer', 'O2MSP.client')
          Writers:
            Type: Signature
            Rule: OR('O2MSP.admin', 'O2MSP.client')
          Admins:
            Type: Signature
            Rule: OR('O2MSP.admin')
        AnchorPeers:
        - Host: peer0.1243574274jywo2
          Port: 7051
      Capabilities:
        V1_3: true
        V1_2: false
        V1_1: false

  配置代码很长,但是我们把它的子标签收起来,大概是这个样子:

Profiles:
  OrdererGenesis:
  OrgsChannel:

  首先我们明确,这个配置文件是可以由两大部分组成的,一部分是OrdererGenesis,我理解为系统通道的配置,另一部分是OrgsChannel,我理解为应用通道的配置,在下文我也会这样称呼,这样使得整个文件更加清晰和简单。但是在经过在百度上查阅了一些资料和理解后,我觉得这个配置文件应该可以写的更加条理清晰:

  1. profile / 配置的入口,我们可以把整个文件主要配置定义为以下内容:
Profiles:
   OrdererGenesis:
       Orderer:
           <<: *OrdererDefaults
           Organizations:
               - *OrdererOrg
       Consortiums:
           SampleConsortium:
               Organizations:
                   - *Org1
                   - *Org2
   OrgsChannel:
       Consortium: SampleConsortium
       Application:
           <<: *ApplicationDefaults
           Organizations:
               - *Org1
               - *Org2

以上yaml文件中所使用的到的以下符号释义:

使用符号符号意义
<<合并数据结果
&锚点(使用上可以看成是类似变量的定义)
*引用一个定义好的锚点

分析以上配置文件我们发现在系统通道和应用通道中我们分别需要两个信息:

配置项需要的配置信息
系统通道Orderer 、Consortiurns
应用通道Application 、Consortium

关于yaml文件的特殊符号语法可以参考:参考文章
2. Organizations / 组织机构配置
这部分的配置信息被以上的profile所引用:

Organizations:
  - &OrdererOrg
	Name: Orderer
	ID: OrdererMSP
	MSPDir: /data/HduFabric/baasmanager/baas-nfsshared/baas-artifacts/1243574274/jyw/crypto-config/ordererOrganizations/1243574274jyworderer/msp
	Policies:
      Readers:
        Type: Signature
        Rule: OR('OrdererMSP.member')
      Writers:
        Type: Signature
        Rule: OR('OrdererMSP.member')
      Admins:
        Type: Signature
        Rule: OR('OrdererMSP.admin')
	AnchorPeers: []

  - &Org1
	Name: O1
	ID: O1MSP
	MSPDir: /data/HduFabric/baasmanager/baas-nfsshared/baas-artifacts/1243574274/jyw/crypto-config/peerOrganizations/1243574274jywo1/msp
	Policies:
        Readers:
          Type: Signature
          Rule: OR('O1MSP.admin', 'O1MSP.peer', 'O1MSP.client')
        Writers:
          Type: Signature
          Rule: OR('O1MSP.admin', 'O1MSP.client')
        Admins:
          Type: Signature
          Rule: OR('O1MSP.admin')
	AnchorPeers:
      - Host: peer0.1243574274jywo1
        Port: 7051

- &Org2
	Name: O1
	ID: O1MSP
	MSPDir: /data/HduFabric/baasmanager/baas-nfsshared/baas-artifacts/1243574274/jyw/crypto-config/peerOrganizations/1243574274jywo2/msp
	Policies:
        Readers:
          Type: Signature
          Rule: OR('O2MSP.admin', 'O2MSP.peer', 'O2MSP.client')
        Writers:
          Type: Signature
          Rule: OR('O2MSP.admin', 'O2MSP.client')
        Admins:
          Type: Signature
          Rule: OR('O2MSP.admin')
	AnchorPeers:
      - Host: peer0.1243574274jywo2
        Port: 7051

我们来分析一下这部分的子配置文件,首先定义了Organizations标签,然后其内部是三个数组,分别代表了三个组织的具体配置信息。其中一个是排序组织,另外两个组织是正常的组织,里面的一些属性甚至可以再定义锚点然后引用来简化配置信息,这里就不再细分了,下面用一个表格展示各个标签的具体含义:

属性名称属性意义
Name组织名称
ID组织 ID
MSPDirMSP所在文件夹
Policies访问控制规则
AnchorPeers锚节点相关配置
  1. Orderer / 排序节点配置
Orderer:&OrdererDefaults                    
  OrdererType: kafka      
  Addresses:              
  - orderer0.1243574274jyworderer:7050
  BatchTimeout: 1s        
  BatchSize:
    MaxMessageCount: 10   
    AbsoluteMaxBytes: 99 MB 
    PreferredMaxBytes: 512 KB 
  Kafka:
    Brokers:              
    - kafka0.1243574274jywkafka:9092
    - kafka1.1243574274jywkafka:9092
    - kafka2.1243574274jywkafka:9092
    - kafka3.1243574274jywkafka:9092
  EtcdRaft:
    Consenters: []
  Policies:
    Readers:
      Type: ImplicitMeta
      Rule: ANY Readers
    Writers:
      Type: ImplicitMeta
      Rule: ANY Writers
    Admins:
      Type: ImplicitMeta
      Rule: MAJORITY Admins
    BlockValidation:
      Type: ImplicitMeta
      Rule: ANY Writers
  Capabilities:
    V1_1: true

这部分的配置信息主要配置了排序节点采用的共识算法以及对应相关参数

属性意义
OrdererTypeorderer类型,包括solo和kafka
Addresses服务地址
BatchTimeout区块生成超时时间
MaxMessageCount区块消息数量
AbsoluteMaxBytes区块绝对最大字节数
PreferredMaxBytes一个区块的建议字节数,如果一个交易消息的大小超过了这个值, 就会被放入另外一个更大的区块中
Kafka定义了kafka的broken域名
EtcdRaftRaft相关配置参数
Capabilities类似于版本支持的一个属性
  1. Application / 应用配置
Application: &ApplicationDefaults
      Policies:
        Readers:
          Type: ImplicitMeta
          Rule: ANY Readers
        Writers:
          Type: ImplicitMeta
          Rule: ANY Writers
        Admins:
          Type: ImplicitMeta
          Rule: MAJORITY Admins
      Organizations:
      Capabilities:
        V1_3: true
        V1_2: false
        V1_1: false
属性意义
Organizations加入通道中的组织信息

  经过了以上的分析之后,其实这个文件配置的基本内容应该可以有个大概的印象了,由两大部分组成,那两大部分中包含了一些组织、规则等信息,如果使用锚点和引用不仅增加了配置文件的可读性,而且使得子配置被复用,使得代码更加简洁。但是学到现在对于配置文件中的一些小细节还是有部分不理解,了解了这个配置文件的内容之后,我们可以从配置文件的功能区更好地总结这个配置文件,同时也可以理解为什么可以实现那个功能。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值