我有一个带有节点SDK和5个筏订购者的3组织6对等系统。木筏运转良好,试图杀死领导人并进行选举。该SDK也可以很好地调用事务。但是困扰我的问题是启动网络时订购系统默认使用第一个订购者,例如orderer1.example.com,现在如果我杀死了这个第一个订购者,网络将失败,在筏选择新的领导者时交易调用将失败。当我尝试调用事务时,它显示连接失败,无法连接到所有地址并且服务不可用。
我在SDk的打字稿部分中看到了一种传递订购者的方法,在这里我编写了一个循环以传递所有订购者,以上问题得以解决。
在js实现中有什么方法可以解决这个问题?
答案 0 :(得分: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使用连接配置文件自动解析订购者,您可以执行此步骤并仅发送可用的订购者,并且可以使用发现服务提供可用的订购者