深入浅出分布式技术原理
陈现麟
伴鱼技术中台负责人,前小米工程师
21241 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 39 讲
深入浅出分布式技术原理
15
15
1.0x
00:00/00:00
登录|注册

27|一致性与共识(二):它们是鸡生蛋还是蛋生鸡?

程序自动切换主节点(需要共识算法)
人工切换主节点
等待主节点修复
常见选择
不是线性一致性的必要条件
实现高可用的线性一致性
主节点崩溃时的处理
主从复制模型的数据保持最终一致性
崩溃-停止失败(Crash-Stop Failure)
拜占庭失败(Byzantine Failure)
崩溃-恢复失败(Crash-Recovery Failure)
实际应用中通过超时等机制解决
在异步网络中,节点故障导致无法达成共识
可终止性(Termination)
合法性(Validity)
诚实性(Integrity)
一致同意(Uniform Agreement)
分布式锁服务
主从复制模型中的Leader选举
共识和高可用之间的关系
共识算法
线性一致性
故障模型
FLP不可能原理
共识算法条件
应用场景
多个节点对某个事情达成一致的结果
思考题
一致性和共识的关系
达成共识的挑战
共识问题的定义
一致性与共识的关系

该思维导图由 AI 生成,仅供参考

你好,我是陈现麟。
通过上节课的学习,我们了解了一致性模型的发展历史,同时还掌握了各个一致性模型之间的强弱差异,这样在极客时间后端技术的选型和演进过程中,你就能够做出最适合业务场景的选择了,这对于我们搭建分布式系统是非常关键的一个权衡。
其实一致性和共识是两个如影随形的概念,我们在讨论一致性的时候,总是会提到共识,同时我们在研究共识的时候,一致性也是不能绕过的话题。那么,你一定会很好奇它们之间的关系是什么?一致性和共识是像鸡生蛋和蛋生鸡这种非常紧密的关系呢?还是其他的比较弱的关系呢?
在这节课中,我们主要来讨论一致性与共识之间的关系,一方面解开你的疑问,另一方面通过探讨它们之间的关系,让你能够进一步理解一致性和共识。我们先一起来了解共识问题的场景与定义,然后分析达成共识所面临的挑战,最后再来探讨一致性和共识的关系。

共识问题的定义

在分布式系统中,共识(Consensus)问题是最重要,也是最基本的问题之一,简单来说它就是多个节点(进程)对某一个事情达成一致的结果。在分布式系统中,我们经常碰到这样的场景,比如在主从复制的模型中,需要在多个节点选举出 Leader 节点。由于有且只能有一个 Leader 节点,所以多个节点必须就哪一个节点是 Leader 这个决定达成一致。那么共识算法经常用于像选举 Leader 、分布式锁服务这样,有且只有一个能胜出的场景。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

共识算法在分布式系统中扮演着至关重要的角色,涉及一致同意、诚实性、合法性和可终止性等核心条件。挑战包括异步网络模型下的共识难题以及对分布式系统的故障模型定义。共识算法如Raft和Paxos通过超时等机制解决了“FLP不可能”原理带来的挑战。一致性最强的线性一致性在主从复制模型中表现,但主节点故障时需要共识算法的帮助。通过共识算法,可以实现高可用的线性一致性,但共识算法并非线性一致性的必要条件。因此,共识算法是手段,一致性是目的。在实际应用中,应选择经过验证的开源程序如ZooKeeper和etcd,而不是自行实现共识算法。共识和高可用之间的关系在于共识算法可以实现高可用的线性一致性,但高可用并非共识算法的必要条件。因此,在构建分布式系统时,需要综合考虑共识算法和高可用性的关系,选择合适的方案来满足系统的需求。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入浅出分布式技术原理》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(6)

  • 最新
  • 精选
  • 不吃辣👾
    所有节点达成共识,就强一致性,类似2pc。部分节点达成共识就弱一致性,类似raft算法。

    作者回复: raft 是强一致性的,raft 和 2pc 的区别在于 raft 不要求所有的节点在操作完成了立即一致,大多数一致就可以,不一致的节点可以慢慢复制追上,2pc 则需要所有节点在操作完成后,所有的节点都立即一致。

    2022-04-10
    2
  • 啊树
    共识是高可用的基石。

    作者回复: 非常👍

    2022-04-04
    2
  • Geek_66e7c8
    老师我想请问下 mysql 主从同步不是强一致性 但又是支持事务的 俩个矛盾吗 感谢回答
    2022-10-14归属地:江苏
  • Rayjun
    对于区块链这类的系统来说,共识也是达成一致性的手段,不过区块链达成的是最终一致性,所以区块链是一个AP 系统,这样理解对么
    2022-07-13
  • 李二木
    出共识算法必须满足的四个条件 来自什么地方呢?
    2022-04-10
    1
  • peter
    请教老师几个问题: Q1:分布式系统一定有共识问题吗? 我的理解:分布式系统可以有共识问题,也可以没有共识问题。比如采用hadoop实现一个简单的分布式计算;一个中心节点作为调度器,调度多个节点一起完成一个计算,这个例子就没有共识问题。我的理解是否对? Q2:ABD 和 SCD broadcast 之类的非共识算法为什么用得少?
    2022-04-05
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部