如何解决在 Hyperledger Fabric 中查询单个值需要 10-20 秒
我刚刚在 2 个组织/节点/订购者上使用 Raft https://github.com/Altoros/Ansible-Fabric-Starter
构建了一个 Hyperledger Fabric 1.4.4 网络网络运行良好,但是当我尝试从自定义链代码中选择单个值时,查询需要 10-20 秒,相当多。我正在使用 LevelDB。
它托管在 AWS 上的 2 个 t3a-small 实例上(2vCPU,2GB Ram)
在写入数据时,它不是那么长(258 毫秒),这是可以接受的。
我应该如何改善读取延迟?这只是基础设施问题(我的虚拟机的垂直扩展)还是我忘记了配置?
解决方法
在您提交的 ansible-fabric-starter 处,链码查询函数似乎是通过 peer chaincode invoke
命令调用的。
- test_bilateral.yml
...
raw: "docker exec cli.{{ org }}.{{ global_domain }} bash -c 'peer chaincode invoke --cafile /etc/hyperledger/artifacts/crypto-config/ordererOrganizations/{{ global_domain }}/tlsca/tlsca.{{ global_domain }}-cert.pem --tls -o orderer{{ orderer_id | default(0) }}.{{ global_domain }}:7050 -C {{ invoke_channel_name }} -n {{ chaincode_name }} -c {{ chaincode_update_json | to_json }}'"
...
- test.yml
...
raw: "docker exec cli.{{ org }}.{{ global_domain }} bash -c 'peer chaincode invoke --cafile /etc/hyperledger/artifacts/crypto-config/ordererOrganizations/{{ global_domain }}/tlsca/tlsca.{{ global_domain }}-cert.pem --tls -o orderer{{ orderer_id | default() }}.{{ global_domain }}:7050 -C {{ invoke_channel_name }} -n {{ chaincode_name }} -c {{ chaincode_update_json | to_json }}'"
...
换句话说,当您看到交易流程时,可以推断您的查询命令搜索分类帐,将结果发送给排序者,并包括区块链更新之前的所有延迟。
peer chaincode invoke
包括将交易提案的背书反映到账本(ordering/block packaing/validationCheck(with mvcc)/eventEmit...)的过程。
链码中的 query
只是 ansible-fabric-starter 中的一个函数,不应与结构网络上的 peer chaincode query
混淆。尝试根据 peer chaincode query
命令运行它。
这里有一个额外的例子来帮助你理解。
peer chaincode invoke '{"Args":["invoke","a","100"]}'
# stdout : a = 100
# fabric : a = 100,[blockchain]: added block;
peer chaincode query '{"Args":["invoke","300"]}'
# stdout : a = 300
# fabric : a = 100
# something... like simulation
peer chaincode invoke '{"Args":["query","a"]}' # this is your situation
# stdout : a = 100
# fabric : a = 100,[blockchain]: added block;
peer chaincode query'{"Args":["query","a"]}' # change like this
# stdout : a = 100
# fabric : a = 100
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。