脑裂及解决方法

脑裂指一个集群由于网络的故障,被分为至少两个彼此无法通信的单独集群,此时如果两个集群都各自工作,则可能会产生严重的数据冲突和错误。

redis哨兵机制-脑裂:

主节点由于网络等原因,不能被哨兵感知,选举出新主节点,然后数据仍写入旧主节点,新主节点无法同步数据,旧主节点网络恢复后,被哨兵降级为从节点,从而造成数据丢失。

解决:

min-slaves-to-write 1         // 要求至少有1个slave
min-slaves-max-lag 10      // 数据复制和同步的延迟不能超过10秒

如果不能继续给指定数量的slave发送数据,而且slave超过10秒没有给自己ack消息,那么就直接拒绝客户端的写请求。这样脑裂后的旧master就不会接受client的新数据,最多就丢失10秒的数据,也就避免了大量长时间的数据丢失。

zookeeper脑裂

leader、follow节点之间的连接中断,从而选出多个leader,造成数据混乱等问题。

解决:

过半机制:只有得到集群中超过过半节点的投票,才能成为leader节点。

follow节点在处理leader节点的写请求时,会判断leader节点的epoch是否是最新的,从而只处理最新leader的请求。

其他方法:

--添加冗余的心跳线:减少脑裂发生。

--添加磁盘锁:正在服务一方锁住共享磁盘,其他节点无法获取,但需要注意异常情况下锁的释放。

--添加仲裁机制:通过第三方判断,比如ping参考IP,不通则说明自己节点存在问题,不再提供服务。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值