栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

分布式系统脑裂现象、Lease机制介绍

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

分布式系统脑裂现象、Lease机制介绍

 Java学习:Java从入门到精通总结

 深入浅出RocketMQ设计思想:深入浅出RocketMQ设计思想

 绝对不一样的职场干货:大厂最佳实践经验指南


 最近更新:2022年5月10日

 个人简介:通信工程本硕、Java程序员。做过科研,发过专利,优秀的程序员不应该只是CRUD

 点赞  收藏 ⭐留言  都是我最大的动力!

文章目录
  • 脑裂
  • Lease机制介绍

脑裂


一个故障就将服务器集群分成两部分,右边就不能接收到Leader的日志写入信息了,右边三个机器就会选举出一个新的Leader,原先的集群就分成了两个小集群,这两个小集群就可能产生数据不一致的现象,一个client从不同的集群中读取到了不同的信息,这种现象被称为脑裂


产生原因: 网络断联


解决方案:

使用全局过半的方案,上面5台服务器的情况下,Candidate必须得票超过总数的一半(2)才可以当选Leader,这也正是Zookeeper的解决方案。


在这种情况下,左侧的两台机器都是不可用的状态,右边选举出一个新的Leader来继续提供服务

注意:使用这种解决方案的话,必须保证超过一半的机器处于正常工作状态


Lease机制介绍

颁发者给节点颁发租约,指定其在一定时间内担任Leader,租约一旦颁发出去,在一定时间内就强制生效且不可撤销

还是以上面的场景为例,假设在脑裂发生之前,左边的Leader拿到一个契约,指明在1到10秒之间担任Leader角色,即使右边三台机器连不上Leader,它还是会保留Leader的角色。当契约时间过了之后,将会有一个新的Leader产生。


10s的Lease间隔时间是在实践中检验过,比较合适的

如果拿到租约的Leader挂了,则需要等待下一次租约颁布才能恢复使用,牺牲一点可用性保证了不出现脑裂(强一致性)


潜在问题: Lease机制依赖于每台服务器的时钟,颁发Lease的机器和接收租约的机器之间的时钟误差会导致集群短暂不可用

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/873511.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号