单个订货人可以处理多个渠道吗?
这是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只设置其中一个。我应该为每个频道定义订购者吗?
答案 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
定义两个组织Org1
和Org2
的频道,而
Orgs13Channel:
Consortium: SampleConsortium
Application:
<<: *ApplicationDefaults
Organizations:
- *Org1
- *Org3
可以定义Org1
和Org3
的其他渠道。订购服务的所有配置定义了联盟,并列出了所有可以定义渠道的组织。
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还支持具有多个不同的订购者服务的拓扑模型,每个服务都支持非重叠的通道集。
对等节点可以参与多个频道,而 这些频道可以由不同的订购者服务支持。