我在kafka模式下使用订购程序。现在,在调用chaincode时,我需要提供订购者名称。但是,如果我需要自己提供订购者的名称,那么使用kafka选择订购者有什么用。
答案 0 :(得分:0)
我会注意到,客户端可以在内存中初始化一个记录多个订购者的通道,并且SDK应该提供通过随机订购者发送交易的选项。虽然一个组织的客户可以与一个订购者进行通信,但是另一个组织可能更喜欢将其客户端设置为使用其他订购者(或一组订购者,并且可能在组织自己的服务器上运行)。
kafka的用处是通过帮助跟踪交易来为具有高吞吐量的通道提供故障容错和设置多个订购者的一种方式因此可以对块进行正确的排序。具体来说,当客户将交易发送给订购者时,订购者将中继到kafka集群维护的分区,然后订购者使用/读取该分区以将交易打包为块(订购者既是该集合中的生产者又是消费者)向上)。 kafka通过维护所有订购者使用的交易流来使其同步。
https://docs.google.com/document/d/19JihmW-8blTzN99lAubOfseLUZqdrB6sBR0HsRgCAnY/edit中概述了完整的技术解决方案,下图来自第11页。
在readthedocs页面(https://hyperledger-fabric.readthedocs.io/en/release-1.2/kafka.html)中:
每个频道都映射到Kafka中一个单独的单分区主题。当OSN通过广播RPC接收事务时,它会检查以确保广播客户端有权在通道上进行写入,然后将这些事务中继(即产生)到Kafka中的适当分区。 OSN也会使用此分区,OSN会将接收到的交易分组到本地块中,将其保留在其本地分类帐中,并通过Deliver RPC将其提供给接收客户端。有关底层细节,请参阅描述我们如何进行此设计的文档-图8是上述过程的示意图。