如何在创建频道时传递所有订购者(筏)

问题描述 投票:0回答:1

我有一个3 org 6对等系统,带有节点SDK和5个Raft Orderer。木筏运转良好,试图杀死领导人并进行选举。 SDK也可以很好地调用事务。但是困扰我的问题是启动网络时订购系统默认使用第一个订购者,例如orderer1.example.com,现在如果我杀死了这个第一个订购者,网络将失败,在筏选择新的领导者时交易调用失败。当我尝试调用事务时,它显示连接失败,无法连接到所有地址并且服务不可用。

我在SDk的打字稿部分中看到了一种传递排序器的方法,在这里我编写了一个循环以传递所有订购器,以上问题得以解决。

在js实现中有什么方法可以解决这个问题?

node.js hyperledger-fabric hyperledger raft
1个回答
0
投票

嘿@Anantha Padmanabhan

与订购系统无关,筏是完美的分布式共识算法

在您的情况下,如果有5个订购者,则您想杀死1个订购者,如果第5个订购者是领导者,并且您的网络稳定,则不用担心,剩下的4个将开始选举领导者。

问题出在连接配置文件中的SDK端例如:

  "channels": {
    "samchannel": {
      "orderers": [
        "sam-orderer1",
        "sam-orderer2",
        "sam-orderer3",
        "sam-orderer4",
        "sam-orderer5"
      ],
    ...

如果您尝试删除sam-orderer1订购者,则您的SDK尝试将交易发送到sam-orderer1,因为它位于数组的第0个索引中

测试:尝试删除sam-orderer1以外的其他内容,例如sam-orderer3,现在尝试调用该事务,它将仍然有效

进行此测试并向我更新测试状态

这是从SDK端发出的,一旦它检测到任何排序器已关闭,就停止执行,而应重定向到另一个可用的排序器。我认为唯一的方法是代替SDK使用连接配置文件自动解析订购者,您可以执行此步骤并仅发送可用的订购者,并且可以使用发现服务提供可用的订购者]

© www.soinside.com 2019 - 2024. All rights reserved.