21|复制(三):最早的数据复制方式竟然是无主复制?
陈现麟
该思维导图由 AI 生成,仅供参考
你好,我是陈现麟。
通过上节课,我们掌握了在部署多数据中心的时候,可以用多主复制的方式,让用户直接读写离自己最近的数据中心的数据,减少用户与数据中心之间的网络延迟,提升用户体验。
当我们的业务面向全球的用户时,这个优点将会变得尤为重要,比如一个北京的用户,访问北京的数据中心,网络时延为毫秒级别,但是当他访问美国的数据中心时,网络时延就是百毫秒级别了,这是影响用户体验的关键点。所以,当极客时间启动全球业务的时候,多主复制是一个可以考虑的方案。
但不论是主从复制还是多主复制,所有的写入操作都必须依赖主节点,如果主节点出现故障,则必须再选举出一个新的主节点后,才能继续提供写服务,否则就将大大影响系统的可用性。那么是否有办法可以让单节点故障时,系统的可用性完全不受到影响呢?
我们可以这样思考一下,既然系统的可用性是由主节点的故障导致的,那么我们是否能去掉主节点和从节点的角色,也就是让系统中所有节点的角色都是对等的,这样是否可以解决问题呢?
其实这就是无主复制的数据复制方式,它确实可以解决由主节点故障,导致的系统可用性问题。虽然无主复制是“复制”系列课程的最后一节,但其实它才是最早出现的数据复制方式。无主复制又称为去中心复制,只不过在关系数据库出现并且主导后,由于要确保各副本写入顺序的一致性,主从复制开始流行起来,无主复制被大家慢慢遗忘了。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
无主复制是数据库系统中重要的数据复制方式之一,它不依赖主节点,因此在主节点故障时不会导致系统不可用。然而,由于写入不依赖主节点,可能导致副本之间的写入顺序不同,从而影响数据的一致性。在实现无主复制时,关键问题包括数据读写和数据修复,通过仲裁条件和数据修复方法来保证数据的一致性和可用性。此外,文章还介绍了Sloppy Quorum,它为了系统的可用性而牺牲了数据的一致性,进一步强调了无主复制是一个可用性优先的复制模型。最后,对比了主从复制、多主复制和无主复制的优缺点和应用场景,帮助读者更好地理解数据复制,并根据业务场景做出最佳选择。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入浅出分布式技术原理》,新⼈⾸单¥59
《深入浅出分布式技术原理》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(5)
- 最新
- 精选
- 小达w=6,r=2,写请求可以容忍一个节点写失败,但是这样读请求就可以容忍5个节点失败,这是不是违背了前提条件:读写都能容忍一个节点失败
作者回复: 非常正确👍 能容忍 1 个节点失败 的条件是 能容忍 5 个节点失败的子集,所以没有违背前提条件。
2022-03-214 - 雾都感谢老师写的这么有条理,这么清晰,每天像追剧一样等更新,能否一次多更新点啊
作者回复: 哈哈,全力以赴,多谢多谢
2022-03-211 - 飞鸿无痕通过这个方式,我们可以确保在数据读写时,系统只需要有任意 w 或 r 个节点可用,就能读写成功,这将大大提升系统的可用性。但是这也说明,即使系统的读写能满足仲裁条件 w + r > n ,我们依然无法保证,一定能读取到最新的值,因为新值写入的节点并不包含在这 n 个节点之中。 ---这段话没看明白,希望老师能帮解惑哈。既然w+r大于n,那新写入的值应该至少有一个能被读取到,为啥又说写入的值不一定能读取到,并且新写入的值可能并不包含在n个节点中?总副本数不是n么?
作者回复: 这里是 Sloppy Quorum 的方式,w 和 r 的节点可能不在 n 中,比如 n 中的节点为 1、2、3,写的 w 为 4、5,读的 r 为 6、7,这个情况下,w = 2,r = 2,虽然 w + r > n,但是 w 和 r 并没有交集。
2022-04-15 - 李二木可以用Gossip实现节点间的数据同步。
作者回复: Gossip 一般适合广播数量少,需要广播所有节点的数据,所以比较适合元数据的场景,不太适合数据明确分片并且几个副本的情况。
2022-03-23 - romanminio也是无主复制吧2022-06-06
收起评论