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

26|一致性与共识(一):数据一致性都有哪些级别?

由于互联网公司的快速发展,单机系统面临瓶颈
单机计算机系统内部的分布式场景
不对跨进程的消息排序
所有进程互相看到的写无序,但最终一致
不对没有因果关系的并发排序
所有进程看到的因果事件历史一致有序
有 total order,但不对并发排序
不要求符合时间先后顺序
所有进程看到的事件历史一致有序
读写操作顺序按时间线移动
所有读取都能读到最新写入的值
也称原子一致性、强一致性、立即一致性、外部一致性
通过读写操作序列,举出不同一致性模型的例子
唯一性约束
Leader 选举
事务的原子性
分布式锁
业务场景需求与一致性要求的评估
正确性与性能之间的衡量
没有一致性和共识,就没有可用的分布式系统
分布式系统建立在一致性和共识之上
分布式系统
多路处理器
最终一致性
因果一致性
顺序一致性
线性一致性
思考题
一致性模型的应用场景
一致性模型的权衡
一致性与共识的重要性
一致性问题的来源
数据一致性级别
一致性与共识

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

你好,我是陈现麟。
通过学习“事务”序列的内容,我们从事务的四个特性 ACID 的角度讨论了相关的知识与技术原理,这样在以后的工作中,事务对我们来说就不再是一个陌生和难懂的概念,而是越发清晰了。我们能清楚地知道事务能提供哪些保障,我们的代码逻辑可能会出现什么样的异常情况,以及怎么避免这些异常情况的出现。恭喜你在学习分布式的道路上又前进了一大步!
不过,在前面课程的学习中,我们经常会碰到两个概念:多副本数据的一致性和多节点的共识,比如在分布式锁、事务的原子性等场景中。其实在分布式系统中,一致性和共识是两个绕不过的话题,现在各种各样的分布式系统都是建立在一致性和共识之上的,可以说没有一致性和共识,就没有可用的分布式系统。
既然一致性和共识对于分布式系统来说这么关键,那么我们一定要好好掌握。可是,通过前面课程中对一致性和共识场景的讨论,你现在虽然对二者有了很多的感性认识,知道在什么场景下会遇到一致性和共识方面的问题,也知道一些具体的解决方案,但是如果要你具体介绍一致性和共识的话,心里是不是不太有底呢?
所以,从这节课开始,我们将一起花三节课的时间来解决这个问题。这一节课,我们先介绍一致性问题的来源,然后我们从一致性模型从强到弱的角度,来介绍几种经典的一致性的模型,并且一起讨论和对比各个一致性模型之间的差异。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

分布式系统中的一致性和共识问题是一个重要的技术挑战,本文深入探讨了数据一致性的来源和三种经典的一致性模型:线性一致性、顺序一致性和因果一致性。文章首先指出了数据一致性在分布式系统中的重要性,并介绍了这些一致性模型的定义和特点。线性一致性要求所有读取都能读到最新写入的值,保证数据按时间线从旧值向新值移动;顺序一致性相对放松,对于写操作不要求严格按时间排序,对于读操作只要求所有客户端观察到的顺序一致;因果一致性则更加放松,对于非并发写入操作不再要求节点之间的写入顺序一致,也不要求多个客户端必须观察到一样的顺序。这些模型的介绍有助于读者更好地理解分布式系统中的数据一致性问题,以及不同一致性模型之间的差异和适用场景。 此外,文章还介绍了最终一致性模型,它是一种非常务实的实现,不同于传统的一致性模型,它在一致性方面表现较低,但能够高效实现。最终一致性模型的特点是在一定时间窗口内,客户端可能观察到不一致的结果,但最终所有进程的观点都会一致。这种模型适用于对一致性要求不高但需要高性能的场景。 总的来说,本文通过对一致性模型的深入讨论,使读者能够更全面地了解不同一致性模型的特点和适用场景,为分布式系统中的数据一致性问题提供了重要的参考和指导。

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

全部留言(5)

  • 最新
  • 精选
  • peter
    请教老师一个问题啊: Q1:顺序一致性的描述是否有矛盾? “顺序一致性,它是指所有进程看到的事件历史一致有序,但不需要符合时间先后顺序,”,这句话中,竟然“历史一致”,“历史”就是表示时间啊,历史一致,肯定时间一致啊;但后面说“不需要时间符合先后顺序”。前后不矛盾吗?

    作者回复: 这里的历史是以进程看到的为准,如果两个没有因果的事件 a,b,a 发生后,b 才发生,但是如果所有的进程都认为 b 先发生,那么事件历史就是 b,a。

    2022-04-01
    2
    2
  • HappyHasson
    讲的太笼统了,之前没有深入学习过的 肯定看不懂,这本是一个很大很难的概念
    2022-09-27归属地:广东
    4
  • gm
    老师,对顺序一致性和因果一致性两者的区别还是有些不太理解。对于没有因果关系的非并发写入操作,不要求时间上排序,不就间接导致各节点写入顺序的不一致了。这样看来,两种一致性的写操作没有什么区别呀
    2022-09-06归属地:河南
    1
  • Rayjun
    在在顺序一致性和因果一致性中,如果x1覆盖了x2,那么最终看到的不就是x2么,怎么保证最后一致性一样呢
    2022-07-13
  • 雄哼哼
    mongodb的写大多数 就是最终一致性
    2022-05-24
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部