首页 > 解决方案 > 在使用 kafka 配置时提及订购者名称

问题描述

我在卡夫卡模式下使用排序器。现在在调用链代码时,我需要提供订购者名称。但是,如果我需要自己提供订购者名称,那么使用 kafka 选择订购者有什么用。

标签: hyperledger-fabrichyperledger

解决方案


我会注意到客户端可以在内存中初始化一个通道,该通道具有多个订购者的记录,并且 SDK 应该提供通过随机订购者发送交易的选项。虽然一个组织的客户端可能与一个 orderer 通信,但另一个组织可能更愿意将其客户端设置为使用不同的 orderer(或一组 orderer,也许这些都在组织自己的服务器上运行)。

kafka 的作用在于,它是一种通过帮助跟踪事务并允许对块进行正确排序来为具有高吞吐量和设置多个排序器的通道提供崩溃容错的方法。具体来说,当客户端将事务发送给 orderer 时,orderer 再中继到 kafka 集群维护的一个分区,然后 orderer 再从这个分区消费/读取,将事务打包成块(orderer 既是这个集合中的生产者,又是消费者向上)。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 使用,它将接收到的交易在本地分组到块中,将它们保存在本地分类帐中,并通过 Deliver RPC 将它们提供给接收客户端。有关底层细节,请参阅描述我们如何进行此设计的文档 — 图 8 是上述过程的示意图。

在此处输入图像描述


推荐阅读