Go语言:go-zookeeper客户端支持在zk集群节点断开时重新连接新节点,但不支持Ephemeral Node (临时节点)过期重建

从线上系统的一次故障日志来看,"github.com/samuel/go-zookeeper/zk"这个客户端在面向zk集群时,如果请求原有zk节点i/o超时后,会自动去尝试连接其它zk节点直到重新建立连接。但是如果用来做服务的注册与发现的话,原来创建的Ephemeral Node (临时节点)过期后无法自动重建,需要由应用程序来自行重建。

下面的日志表明客户端在与192.168.6.45:2181的连接i/o超时后,尝试了与192.168.6.106:2181建立连接但session已超时服务端认证失败(由于会话已经过期,原来建立的临时节点也被自动删除了),最后尝试与192.168.6.107:2181建立连接并连接成功。

2021-05-06 15:05:07 [INFO] [/server.go:36] zk: recv loop terminated: err=failed to read from connection: read tcp 192.168.6.32:46601->192.168.6.45:2181: i/o timeout
2021-05-06 15:05:07 [INFO] [/server.go:36] zk: send loop terminated: err=write tcp 192.168.6.32:46601->192.168.6.45:2181: write: broken pipe
2021-05-06 15:05:07 [INFO] [/server.go:36] zk: Connected to 192.168.6.106:2181
2021-05-06 15:05:07 [INFO] [/server.go:36] zk: authentication failed: zk: session has been expired by the server
2021-05-06 15:05:07 [INFO] [/server.go:36] zk: Connected to 192.168.6.107:2181

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值