zookeeper临时节点无法删除原因分析

1.客户端时间和服务端时间不一致,导致过期时间太长

这个是网友分析的一种场景,没遇到过

2.主从节点快照不一致

主节点和从节点的本地快照不一致,导致leader节点不存在从节点的session信息和临时节点信息。

由于临时节点过期淘汰是由主节点操作的,因此从节点的临时节点一致存在。

除非主节点发生切换,或者删除从节点快照,再重启从节点才可以恢复,否则就这样一直错下去。

该问题根因是:

zookeeper在3.6.0版本之前,数据一致性只通过zxid和epoch来确定,其快照实际内容是否完全一致没有校验。

若其它集群的旧leader快照zxid大于当前集群时,则加入新集群就会发生数据截断操作,以保持与新集群的zxid一致。

但是,截断只解决了新集群当前zxid之后的数据一致性,而之前的可能不一致。

即旧leader本地快照与新集群的其它节点不一致。但可惜的是,新集群就是没法发现(因为zxid和epoch都一样了)。

若旧leader变成新leader时,则从节点临时节点将不会被主节点删除。

 

解决方法:

1.升级到3.6.0或以上版本,可以即使发现不一致,从正确节点拷贝过来。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值