分布式数据库 30 讲
王磊
光大银行首席数据架构师
29144 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 34 讲
结束语 (1讲)
分布式数据库 30 讲
15
15
1.0x
00:00/00:00
登录|注册

25 | 容灾与备份:如何设计逃生通道保证业务连续性?

逃生库的作用
逃生通道的用户需求
备用系统提供更高级别的可靠性
系统高可用的特殊形式
单分片的变更消息流的顺序一致性问题
事务一致性
处理性能适配
日志格式适配
异构高可用方案组成
选择逃生库
逃生库选择和搭建
数据同步工具选择
分布式数据库中的逃生通道
系统领域的逃生通道
生活中的逃生通道
思考题
逃生方案
CDC
逃生通道
容灾与备份:如何设计逃生通道保证业务连续性?

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

你好,我是王磊,你也可以叫我 Ivan。
我们今天的关键词是“逃生通道”。在生活中,我们去任何一个公共场所,比如火车站、商场、写字楼,都能看安全出口或者紧急疏散通道的提示,这就是逃生通道。逃生通道的作用就是人们能够快速脱离危险的地方。而在系统领域,逃生通道是指让业务能够脱离已经不可用的原有系统,在一个安全的备用系统中继续运转。
可以说逃生通道就是系统高可用的一种特殊形式。它的特别之处在于,备用系统要提供差异化的、更高级别的可靠性。为什么备用系统能够提供更高级别的可靠性呢?这是主要由于它采用了异构方案。
对于分布式数据库来说,逃生通道存在的意义应该更容易理解。作为一种新兴的技术,分布式数据库还没有足够多的实践案例来证明自身的稳定性,即使是它本身的高可用架构也不足以打消用户的顾虑。这时候就需要设计一种异构的高可用方案,采用更加稳定、可靠的数据库作为备用系统。我们通常把这个备用数据库称为“逃生库”。
在分布式数据库的实践没有成为绝对主流前,逃生通道都是一个不容忽视的用户需求。它可以降低实施风险,打消用户的顾虑,减少新技术应用中遇到的各种阻力。

CDC

作为一个数据库的高可用方案,首先要解决的是数据恢复的完整性,也就是我们提过多次的 RPO。这就需要及时将数据复制到逃生库。通常异构数据库间的数据复制有三种可选方式:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

分布式数据库的逃生通道是一种异构的高可用方案,由分布式数据库、单体数据库和分布式消息队列构成。逃生通道的设计需要解决日志格式适配和性能适配问题,特别是在处理分布式事务时需要保证数据一致性。文章介绍了CockroachDB引入的特殊时间戳标志“Resolved”,用于保证多分片事务的一致性。对于单个分片的变更消息流是否能够保证顺序一致性提出了思考,并欢迎读者在评论区留言讨论。整体来说,逃生通道作为分布式数据库的备用方案,在系统架构中并不常见,但对于分布式数据库来说却显得尤为重要。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《分布式数据库 30 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • piboye
    单体数据库,容量问题怎么解决?

    作者回复: 用一个更大的单体来做逃生库,通常也就是要被分布式数据库替换掉的那个单体库。

    2020-10-07
    3
  • Jxin
    1.CDC其实也用来做其他类型数据存储的同步。比如es和redis。但也有我认为不好的用法,就是侵入业务,以CDC的方式做业务的事件发布。 课后题: 2.不能,因为存mq和mq消费都要保证顺序,这样才能做到有序。
    2020-11-02
    1
  • 胡须老爹
    第二个问题是性能匹配问题。用单体数据库来做逃生库,这里其实有一个悖论。 ------------------------------ 随后关注的是分布式数据库和逃生库的同步时候性能问题,实际上对于TPS,QPS都很高的集群,假定发生问题之后,一般单点的逃生库也是扛不住业务流量。 设计成分片的话,又存在资源比较大的限制和浪费的问题。另外,分布式数据库下不感知分片逻辑,回迁到静态分片的架构上面,业务代码可能也要做修改。
    2021-11-12
    1
  • amixyue
    kfk分区发布订阅保序,水位对齐可用于全局序
    2021-02-01
  • 平风造雨
    单个分片的WAL本身有序,投递到kafka的时候,要保证消费完全有序,某些情况下需要额外的工作,比如表A和表B在一个事务中先更新表A再更新表B,但是表A和表B的数据变更日志不一定是被kafka的消费者按序消费的,或者是按照“原先事务”的方式进行消费的。望老师解答。
    2020-10-07
    1
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部