通过 fabric-sdk-node 提交交易时是否可以优先排序订购者?

is it possible to prioritize orderer when submitting transactions through fabric-sdk-node?

我正在使用 nodejs 和最新的结构网络库编写结构客户端应用程序。 我在 VM 中设置了多个排序节点 运行,并希望在提交交易时优先使用哪个排序节点。

我编写了自己的连接配置文件,包括上述排序节点,并让应用程序使用它来创建网关对象。 然后,我调用 transaction#submit 方法来执行交易。 我想使用距离应用程序最近的排序节点,但我不知道是否可行。

我通读了 fabric-skd-node 源代码,发现承诺过程是在 Commit.js#send method and it pick the first healthy orderer node from the orderer list retrieved using Channel.js#getTargetCommitters 方法中完成的。 因此,我的粗略猜测是,如果连接配置文件中列出的第一个排序节点是可连接的,则会使用它。

如有错误请指正,不胜感激

看起来您是正确的,因为您没有使用服务发现,并且您的客户端仅使用连接配置文件中定义的节点。

如果您使用服务发现来动态发现网络节点,那么排序节点列表会在每次调用时随机化,以帮助在排序节点之间更均匀地分配负载并更好地处理排序节点中断。

https://github.com/hyperledger/fabric-sdk-node/blob/3da1d0beeb5274b021d6bd4a6d8ea69d5642d409/fabric-common/lib/DiscoveryHandler.js#L106-L109

请记住,排序节点会将他们收到的交易复制到其他排序节点以保持一致性并避免单点故障,因此您并没有避免将交易发送到更远的排序节点。