首页 > 解决方案 > 订购者和提交者花时间将数据放入分类帐

问题描述

我们正面临一个与将数据放入分类帐相关的问题。如果我们尝试将数据插入分类帐,然后立即获取插入的数据,我们将一无所获。如果我们在 3 秒左右后请求,一切似乎都很好。有什么解决方案可以克服这种延迟以获得最佳用户体验?

标签: hyperledger-fabric

解决方案


一笔交易的行程是:

  1. 客户(起点)
  2. 订购服务
  3. 卡夫卡集群
  4. 订购服务
  5. 提交节点

在哪里:

  • 仅当您使用基于 Kafka 的订购服务时,第 3 阶段和第 4 阶段才适用
  • 交易在提交到账本之前在第 5 阶段得到验证

只有在所有这些阶段都完成后,您才能看到提交到账本的交易,因此交易不会立即显示是正常的。

至于 3 秒延迟,我怀疑发生这种情况是因为您Orderer.BatchTimeout的默认设置为 2 秒,而您Orderer.BatchSize.MaxMessageCount的值设置为大于 1(默认为 10)。

这意味着在满足这两个条件中的任何一个之前,排序服务都不会切割一个块(并将其交付给提交节点) 。您发送的交易少于Orderer.BatchSize.MaxMessageCount交易,因此排序服务需要等待Orderer.BatchTimeout几秒钟才能切断区块。

为了减少交易显示在您的分类帐中所需的时间,请设置Orderer.BatchTimeout为一个较小的值(例如 1 毫秒),然后Orderer.BatchSize.MaxMessageCount设置为 1。


推荐阅读