26|一致性与共识(一):数据一致性都有哪些级别?
陈现麟
该思维导图由 AI 生成,仅供参考
你好,我是陈现麟。
通过学习“事务”序列的内容,我们从事务的四个特性 ACID 的角度讨论了相关的知识与技术原理,这样在以后的工作中,事务对我们来说就不再是一个陌生和难懂的概念,而是越发清晰了。我们能清楚地知道事务能提供哪些保障,我们的代码逻辑可能会出现什么样的异常情况,以及怎么避免这些异常情况的出现。恭喜你在学习分布式的道路上又前进了一大步!
不过,在前面课程的学习中,我们经常会碰到两个概念:多副本数据的一致性和多节点的共识,比如在分布式锁、事务的原子性等场景中。其实在分布式系统中,一致性和共识是两个绕不过的话题,现在各种各样的分布式系统都是建立在一致性和共识之上的,可以说没有一致性和共识,就没有可用的分布式系统。
既然一致性和共识对于分布式系统来说这么关键,那么我们一定要好好掌握。可是,通过前面课程中对一致性和共识场景的讨论,你现在虽然对二者有了很多的感性认识,知道在什么场景下会遇到一致性和共识方面的问题,也知道一些具体的解决方案,但是如果要你具体介绍一致性和共识的话,心里是不是不太有底呢?
所以,从这节课开始,我们将一起花三节课的时间来解决这个问题。这一节课,我们先介绍一致性问题的来源,然后我们从一致性模型从强到弱的角度,来介绍几种经典的一致性的模型,并且一起讨论和对比各个一致性模型之间的差异。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
分布式系统中的一致性和共识问题是一个重要的技术挑战,本文深入探讨了数据一致性的来源和三种经典的一致性模型:线性一致性、顺序一致性和因果一致性。文章首先指出了数据一致性在分布式系统中的重要性,并介绍了这些一致性模型的定义和特点。线性一致性要求所有读取都能读到最新写入的值,保证数据按时间线从旧值向新值移动;顺序一致性相对放松,对于写操作不要求严格按时间排序,对于读操作只要求所有客户端观察到的顺序一致;因果一致性则更加放松,对于非并发写入操作不再要求节点之间的写入顺序一致,也不要求多个客户端必须观察到一样的顺序。这些模型的介绍有助于读者更好地理解分布式系统中的数据一致性问题,以及不同一致性模型之间的差异和适用场景。 此外,文章还介绍了最终一致性模型,它是一种非常务实的实现,不同于传统的一致性模型,它在一致性方面表现较低,但能够高效实现。最终一致性模型的特点是在一定时间窗口内,客户端可能观察到不一致的结果,但最终所有进程的观点都会一致。这种模型适用于对一致性要求不高但需要高性能的场景。 总的来说,本文通过对一致性模型的深入讨论,使读者能够更全面地了解不同一致性模型的特点和适用场景,为分布式系统中的数据一致性问题提供了重要的参考和指导。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入浅出分布式技术原理》,新⼈⾸单¥59
《深入浅出分布式技术原理》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(5)
- 最新
- 精选
- peter请教老师一个问题啊: Q1:顺序一致性的描述是否有矛盾? “顺序一致性,它是指所有进程看到的事件历史一致有序,但不需要符合时间先后顺序,”,这句话中,竟然“历史一致”,“历史”就是表示时间啊,历史一致,肯定时间一致啊;但后面说“不需要时间符合先后顺序”。前后不矛盾吗?
作者回复: 这里的历史是以进程看到的为准,如果两个没有因果的事件 a,b,a 发生后,b 才发生,但是如果所有的进程都认为 b 先发生,那么事件历史就是 b,a。
2022-04-0122 - HappyHasson讲的太笼统了,之前没有深入学习过的 肯定看不懂,这本是一个很大很难的概念2022-09-27归属地:广东4
- gm老师,对顺序一致性和因果一致性两者的区别还是有些不太理解。对于没有因果关系的非并发写入操作,不要求时间上排序,不就间接导致各节点写入顺序的不一致了。这样看来,两种一致性的写操作没有什么区别呀2022-09-06归属地:河南1
- Rayjun在在顺序一致性和因果一致性中,如果x1覆盖了x2,那么最终看到的不就是x2么,怎么保证最后一致性一样呢2022-07-13
- 雄哼哼mongodb的写大多数 就是最终一致性2022-05-24
收起评论