单个订货人可以处理多个通道吗?

时间:2017-11-30 13:56:37

标签: hyperledger-fabric

单个订货人可以处理多个渠道吗?

这是orderer的.yaml配置:

orderer_example_com:
  container_name: orderer.example.com
  image: hyperledger/fabric-orderer
  environment:
    - ORDERER_GENERAL_LOGLEVEL=debug
    - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
    - ORDERER_GENERAL_GENESISMETHOD=file
    - ORDERER_GENERAL_GENESISFILE=/etc/hyperledger/configtx/genesis1.block
    - ORDERER_GENERAL_LOCALMSPID=OrdererMSP
    - ORDERER_GENERAL_LOCALMSPDIR=/etc/hyperledger/crypto/orderer/msp
    - ORDERER_GENERAL_TLS_ENABLED=true
    - ORDERER_GENERAL_TLS_PRIVATEKEY=/etc/hyperledger/crypto/orderer/tls/server.key
    - ORDERER_GENERAL_TLS_CERTIFICATE=/etc/hyperledger/crypto/orderer/tls/server.crt
   - ORDERER_GENERAL_TLS_ROOTCAS=[/etc/hyperledger/crypto/orderer/tls/ca.crt, /etc/hyperledger/crypto/peerOrg1/tls/ca.crt, /etc/hyperledger/crypto/peerOrg2/tls/ca.crt, /etc/hyperledger/crypto/peerOrg3/tls/ca.crt]
  working_dir: /opt/gopath/src/github.com/hyperledger/fabric/orderers
  command: orderer
  ports:
    - 7050:7050
  volumes:
    - ./channel:/etc/hyperledger/configtx
    - ./channel/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/:/etc/hyperledger/crypto/orderer
    - ./channel/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/:/etc/hyperledger/crypto/peerOrg1
    - ./channel/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/:/etc/hyperledger/crypto/peerOrg2
    - ./channel/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/:/etc/hyperledger/crypto/peerOrg3
  networks:
    chfn:
      aliases:
       - orderer.example.com

每个通道都有1个genesis文件,属性ORDERER_GENERAL_GENESISFILE只设置其中一个。我应该为每个频道定义订购者吗?

3 个答案:

答案 0 :(得分:1)

如果您查看configtx.yaml文件,该文件实际上包含要编码到订购服务创建块中的所有相关信息,例如组织,它定义了引导阶段的所有已知组织这可能会形成一个联盟来发起一个频道。实际上,configtxgen将与组织相关的加密材料编码到创世块中,这样订购者就能够验证尝试提交事务或连接以提供新块的对等体的身份。

################################################################################
#
#   Section: Organizations
#
#   - This section defines the different organizational identities which will
#   be referenced later in the configuration.
#
################################################################################
Organizations:

    # SampleOrg defines an MSP using the sampleconfig.  It should never be used
    # in production but may be used as a template for other definitions
    - &OrdererOrg
        # DefaultOrg defines the organization which is used in the sampleconfig
        # of the fabric.git development environment
        Name: OrdererOrg

        # ID to load the MSP definition as
        ID: OrdererMSP

        # MSPDir is the filesystem path which contains the MSP configuration
        MSPDir: crypto-config/ordererOrganizations/example.com/msp

虽然这个起源块与使用新通道创建的起源块无关。因此,对于您的问题,一个订购服务可以处理多个渠道,只要它们由知识组织组成即可。您可以为configtxgen工具定义配置文件,以指定要编码为特定渠道的联合体的组织列表,例如:

Orgs12Channel:                                                                                                                                                                                                                    
    Consortium: SampleConsortium
    Application:
        <<: *ApplicationDefaults
        Organizations:
            - *Org1
            - *Org2

定义两个组织Org1Org2的频道,而

Orgs13Channel:
    Consortium: SampleConsortium
    Application:
        <<: *ApplicationDefaults
        Organizations:
            - *Org1
            - *Org3

可以定义Org1Org3的其他渠道。订购服务的所有配置定义了联盟,并列出了所有可以定义渠道的组织。

OrdererGenesis:
    Orderer:
        <<: *OrdererDefaults
        Organizations:
            - *OrdererOrg
    Consortiums:
        SampleConsortium:
            Organizations:
                - *Org1
                - *Org2
                - *Org3

答案 1 :(得分:0)

是。我们可以为多个渠道单一订单。 但是我们应该有很多命令来保持系统的可用性。

答案 2 :(得分:0)

TL; DR:@ Artem的回答是肯定的,Hyperledger Fabric中的订购服务可以处理多个渠道。

orderer服务可能有多个节点,以提供由某些容错协议(如PAXOS,RAFT,* BFT等)实现的服务的弹性。对于Kafka订购者,我们目前支持崩溃容错。

Fabric还支持具有多个不同的订购者服务的拓扑模型,每个服务都支持非重叠的通道集。

对等节点可以参与多个频道,而 这些频道可以由不同的订购者服务支持。