32 | 答疑篇:如何判断并解决网络分区问题?
聂鹏程
该思维导图由 AI 生成,仅供参考
你好,我是聂鹏程。今天,我来继续带你打卡分布式核心技术。
到目前为止,“分布式技术原理与算法解析”专栏已经接近尾声了。在这里,我首先要感谢你坚持学习每一篇文章,以及对每一道思考题的积极思考与讨论,并在此基础上扩展了类似问题。
比如 @Jackey、@Eternal、@leslie、@mt11912、@小白啊、@随心而至等同学,一直在跟着专栏的更新节奏学习,并非常积极地在留言区留言讨论、总结自己的理解,并查询相关资料补充文中未讲解到或没有深入展开的问题。
今天,我梳理了文后的留言,发现大家对最近几篇文章介绍的分布式高可靠问题特别感兴趣,特别是我没有详细展开的网络分区问题。
因此,在今天这篇文章中,我将会与你深入探讨网络分区问题,以帮助你进一步理解并解决业务中的故障恢复问题。
什么是网络分区?
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了如何判断和解决网络分区问题,这是分布式系统中常见的故障类型。文章探讨了网络分区的判断方法和出现概率较高的场景,并介绍了处理网络分区的方法,包括Static Quorum、Keep Majority、设置仲裁机制和基于共享资源的方式。强调了处理网络分区问题时需要考虑的均衡策略。其中,Static Quorum方法不适用于处理多个分区和动态节点加入的场景;Keep Majority方法适用于动态节点场景下分区问题,但不适用于处理多个分区的情况;而基于仲裁和共享资源的网络分区处理方法适用于有一个稳定可靠的三方节点或组件的场景。文章总结了网络分区处理方法的本质,即在产生分区后,选出一个分区,保证同时最多有一个分区对外提供服务。文章以简洁明了的方式介绍了网络分区问题及其处理方法,为读者提供了深入了解分布式系统中网络分区问题的指导。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《分布式技术原理与算法解析》,新⼈⾸单¥59
《分布式技术原理与算法解析》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(9)
- 最新
- 精选
- gg引入仲裁者方案感觉行不通: 仲裁者和所有集群节点之间的网络也有可能出现故障
作者回复: 具体问题需要具体分析,引入仲裁者,如果集群节点之间与仲裁者之间网络出现问题,可以根据具体的业务选择策略,比如能连上仲裁者的集群节点活着,连不上的节点自杀等。没有完美的方案,基本都是根据不同的业务,不同的需求和可容忍度选择策略。
2020-06-2724 - 有铭引入仲裁者?那仲裁者自己不就是一个薄弱点,仲裁者挂了咋办呢2019-12-1157
- 钱受教了,老师讲的网络分区,应该就是脑裂。 脑裂最大的问题就是会破坏数据的一致性(如果提供的全是数据的读服务,是没有任何问题的,不过只有读没有写这种服务应该是不存在的,否则数据从哪里来呢?可能存在阶段性的,比如:学位信息),所以,为了数据的一致性,需要仅保留一个分区提供服务,就好似天无二日国无二君。 下面的问题就是权衡保留那个分区的问题了,一般都会选择半数或大多数原则。其实我觉得网络分区,怎么发现是一个难题,搞一个观察者一直观察是个法子,如果观察者和别观察者之间也发生网络断链了呢?用心跳机制,来报警。 感觉老师没讲分布式系统中,监控和报警这一块的内容,这一块也是极为重要的基础设施,发现问题、定位问题、解决问题,特别是分布式系统的问题,没有这些基本会手忙脚乱到处抓瞎。2020-02-2012
- leslie"网络分区"个人一直觉得是应当算是分布式架构中一个难点:简单的说可能是单独的一小块资源,一个最小集群,可是它只是其中的一部分,例如数据库集群主要就两类,投票或者单独用一台keeplive,可是向上还有一层。 网络分区一定程度上难的应当是嵌套的带来的问题;一套分布式系统里面可能会有多个子系统,例如数据系统、应用系统。。。每个系统内部有又有一套小的,最小模式的网络分区容易;难的其实是自上而下的排查或者自下而上的排查。这是我个人这些年OPS经历中感到最不好处理的事情,如同算法的"动态规划"拆分到最下面策略就哪些。2019-12-1112
- 黄骏一般的分布式共识算法(paxos、raft)应该是Keep Majority 配合多数(超过总数1/2)分区胜出的原则,在多个分区场景,如果任一个分区的数量都不超过总数1/2,那么集群此时不可用。2024-01-04归属地:湖北1
- Jackey之前只考虑了非集中式的分布式系统,没有考虑集中式的。现在有种茅塞顿开的感觉2019-12-111
- yml435一个比较好的仲裁者就是DB;因为现在几乎所有的集群提供服务都离不开DB,如果DB出现故障那整个集群是不可用的;如果出现脑裂后,可以各分区的主节点都向约定好的DB表中定时写入一条数据,用乐观锁机制,当发现乐观锁出现版本号不对时,这说明至少还有一个分区存在,这时可以通过简单的比较各分区主节点序号大小来选择最终哪个分区提供服务;2022-07-07
- new life关于网络分区的处理方法,其本质就是,在产生分区后,选出一个分区,保证同时最多有一个分区对外提供服务 ----------------------------------------- 选出一个分区来对外提供服务 其他分区服务停了 感觉有点简单粗暴,如果这个分区扛不住请求压力 又要触发 限流 降级 等一系列操作2019-12-12
- 阿卡牛CAP中的网络分区不是指每个分区都可以对外提供服务,但要在数据一致性和可用性间选一个,文稿中说的是只保留一个分区,有点搞不懂2019-12-113
收起评论