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

20|复制(二):多主复制的多主副本同时修改了怎么办?

业务系统定义冲突解决逻辑
数据结构和算法处理
最高优先级写入获胜
最后写入获胜
垂直分片(思考题)
水平分片
全部至全部拓扑
星形拓扑
环形拓扑
自定义解决冲突
由用户解决冲突
自定义解决冲突
预定义解决冲突
数据分片
新增导致的冲突
更新导致的冲突
主副本间相互复制
每个单元处理读写请求
在线日历
在线文档
网络时延优化
容灾
评估业务特点和一致性要求
解决写入冲突的方法
实现多主复制的注意点
多主复制优点
性能与延迟
一致性要求
业务特点
复制拓扑结构问题
数据一致性问题
解决冲突的难度
读时解决冲突
写时解决冲突
避免冲突
写入冲突的形式
多个主从复制单元
客户端本地修改
异地多数据中心
总结
使用多主复制的考量
多主复制的关键问题
冲突解决
多主复制的实现
多主复制的场景
多主复制

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

你好,我是陈现麟。
通过上节课的学习,我们掌握了主从复制中,同步复制和异步复制的原理与知识,这样我们就可以根据业务场景,为极客时间后端的缓存系统 Redis 、关系数据库 MySQL 和 PostgreSQL 选择合适的数据复制方式,确保存储系统的高可用了。
但是,随着极客时间业务的快速发展,我们对产品的可用性和用户体验会提出更高的要求,那么在异地建立多个数据中心就是一个不错的思路,它可以让系统容忍地区性的灾害,并且用户也可以就近接入数据中心来优化网络时延。
不过,如果我们在多个数据中心之间,依然通过主从复制来同步数据,那么所有的写请求都需要经过主副本所在的数据中心,容灾能力和网络时延的问题并没有彻底改善,这个问题如何解决呢?
其实通过多主复制的方式进行数据复制,就可以避免主从复制,不能发挥多数据中心优势的问题了,所以本节课,我们将通过多主复制的技术原理解决这个问题。

为什么需要多主复制

我们都知道,数据复制是指将同一份数据复制到多个机器上,来避免机器故障时数据丢失的问题,它主要是用于保障数据高可用的。可一旦我们有了多个数据副本,为了提供更好的容灾能力,数据的多个副本应该分布得足够远,分布在多个机房或者多个城市中。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

多主复制是解决多数据中心之间数据同步问题的有效方式。它允许每个主从复制单元处理读写请求,提高系统的容灾能力和用户体验。然而,异步复制可能导致多个主副本同时修改数据,引发冲突。文章讨论了写时解决冲突和读时解决冲突的思路,以及多主复制面临的关键问题。解决冲突的难度大,异步模式可能导致数据一致性问题,而复制拓扑结构也会影响系统的一致性。因此,在使用多主复制时,需要评估业务特点,对一致性要求高的业务需要慎重考虑。总的来说,多主复制适用于多数据中心的场景,能提高系统的容灾能力和用户体验,但也会在一定程度上降低系统的一致性。

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

全部留言(6)

  • 最新
  • 精选
  • wenxuan
    通过垂直分片的方式解决多主复制可能遇到的问题: 假设主节点 1 拥有字段 A,主节点 2 拥有字段 B。在某一时刻,主节点 A 上要对记录的两个字段进行修改 (a0, b0) => (a1, b1),主节点 2 上也要对该记录进行修改 (a0, b0) => (a2, b2)。由于节点 1 需要把对 B 的修改转发到节点 2, 节点 2 需要把对 A 的修改转发到节点 1,A 和 B 最终至少面临 4 种可能的状态组合: (a1, b1), (a1, b2), (a2, b1), (a2, b2),很难确定究哪一种组合是正确的。

    作者回复: 👍👍

    2022-03-27
    6
  • 不吃辣👾
    思考题:类似多线程中对两个有约束条件的变量同时修改一样,造成约束条件失效。这里约束条件是同一行数据是原子不可分割的整体。老师,那遇到这种情况,多线程用锁或者final解决的,在垂直分片的多主复制用的什么办法解决的呢?如果用分布式锁,是不是依然退化成主从复制了。难道增加自增id维度,小id的不能覆盖大id。期待老师回复。

    作者回复: 对的,多主复制的冲突是没有办法避免的,使用自增 ID 处理冲突是可以的,不过自增 ID 不能由各主节点生成,需要全局的自增 ID。

    2022-04-05
    1
  • 毛哥
    ddia
    2022-03-24
    4
  • X
    系统的每一次新增,修改都分配唯一id并且id是有绝对时序的,复制时保证时序是不是就没问题了?
    2023-03-10归属地:北京
  • HappyHasson
    多主复制 在现实中 文中提供的方案基本都不能用,还得paxos raft才有用。。
    2022-09-22归属地:广东
  • 绘世浮夸 つ
    老师能不能讲讲自定义冲突目前都有哪些方法呢
    2022-05-12
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部