从 0 开始学架构
李运华
网名“华仔”,前阿里资深技术专家(P9)
152573 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 66 讲
结束语 (1讲)
结课测试 (1讲)
从 0 开始学架构
15
15
1.0x
00:00/00:00
登录|注册

25 | 高可用存储架构:双机架构

缺点
优点
缺点
优点
缺点
优点
模拟式
中介式
互连式
数据要求
基本架构
常见架构
设计关键
优缺点分析
基本实现
优缺点分析
基本实现
设计政府信息存储系统的架构
各种架构的适应场景
主主复制
双机切换
主从复制
主备复制
总结
双机架构
高可用存储架构

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

存储高可用方案的本质都是通过将数据复制到多个存储设备,通过数据冗余的方式来实现高可用,其复杂性主要体现在如何应对复制延迟和中断导致的数据不一致问题。因此,对任何一个高可用存储方案,我们需要从以下几个方面去进行思考和分析:
数据如何复制?
各个节点的职责是什么?
如何应对复制延迟?
如何应对复制中断?
常见的高可用存储架构有主备、主从、主主、集群、分区,每一种又可以根据业务的需求进行一些特殊的定制化功能,由此衍生出更多的变种。由于不同业务的定制功能难以通用化,今天我将针对业界通用的方案,来分析常见的双机高可用架构:主备、主从、主备 / 主从切换和主主。

主备复制

主备复制是最常见也是最简单的一种存储高可用方案,几乎所有的存储系统都提供了主备复制的功能,例如 MySQL、Redis、MongoDB 等。
1. 基本实现
下面是标准的主备方案结构图:
其整体架构比较简单,主备架构中的“备机”主要还是起到一个备份作用,并不承担实际的业务读写操作,如果要把备机改为主机,需要人工操作。
2. 优缺点分析
主备复制架构的优点就是简单,表现有:
对于客户端来说,不需要感知备机的存在,即使灾难恢复后,原来的备机被人工修改为主机后,对于客户端来说,只是认为主机的地址换了而已,无须知道是原来的备机升级为主机。
对于主机和备机来说,双方只需要进行数据复制即可,无须进行状态判断和主备切换这类复杂的操作。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

存储高可用架构是保障系统数据冗余和故障时依然可用的重要手段。本文深入探讨了存储高可用架构的多种形式,包括主备、主从、主备/主从切换和主主,以及互连式、中介式和模拟式的双机切换架构。通过对这些架构的优缺点和适用场景进行分析,读者可以更好地理解不同架构的特点和适用性。文章还通过实际案例和简洁的语言,帮助读者快速掌握存储高可用架构的本质和常见方案。 在具体架构选择上,主备切换架构适用于对状态传递和状态决策要求较高的场景,而模拟式切换则更适合于临时性、可丢失、可覆盖的数据场景。另外,中介式架构在状态传递和状态决策上更加简单,但需要解决中介本身的高可用问题。因此,不同的业务需求决定了不同的架构选择,读者可以根据自身业务特点进行选择。 总的来说,本文通过对存储高可用架构的多种形式和双机切换架构的深入探讨,为读者提供了全面的了解和选择指南。无论是对于状态传递和状态决策更简单的中介式架构,还是实现更加简单但状态信息有限的模拟式切换,读者都能在不同业务需求下做出明智的架构选择。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学架构》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(83)

  • 最新
  • 精选
  • 空档滑行
    政府信息网站使用主备或者主从架构就可以了。信息都是人工录入,可以补录。数据本来对实时性要求不高,所以出了故障人工修复也来得及。所以主备就够了,如果为了照顾形象可以用主从,保证主机故障后仍然可以查,不能新发

    作者回复: 分析正确

    2018-06-23
    103
  • 文竹
    政府信息公开网站的特点: 1、用户量和QPS不会很大 2、其次读/写都非常少,读相较于写多 3、可忍受一定时间范围的不可用 主主架构因其固有的双向复杂性,很少在实际中使用;再加上此场景并不适合用主主架,故排除使用它。 根据第3个特点就可以排除使用双机互换架构。 对于主备架构来说,主机正常时,备机不提供读写服务,比较浪费。 综合来看,选择主从的存储架构。

    作者回复: 正确

    2018-08-22
    2
    23
  • 南友力max先森🌈
    单机就可以了,搞那么复杂

    作者回复: 单机可靠性只有2个9

    2018-07-16
    4
    14
  • 无聊夫斯基
    复制延迟和复制中断的数据不一致的解决方案好像没看到

    作者回复: 没有解决方案,只能规避和兼容

    2018-08-31
    2
    11
  • Geek_88604f
    中介式相对于互联式来说有如下优势:一是状态决策更加准确。举个例子,在互联模式下如果连接中断则无法判断对方的状态,切也不是,不切也不是;而在中介模式下一方连接中断(无论是主机和中介中断还是备机与中介中断)仍然能够做出决策,就连接来说多了一条冗余判断的方式,毕竟两个连接同时中断的概率更小。如果用上节课介绍的FMEA方法逐个分析的话,会发现中介模式可以解决更多的故障模式。二是将状态决策的逻辑解耦,主备只需要上报状态不需要承担状态的决策,状态决策的逻辑全部由中介来负责,并且可以灵活定制决策逻辑。         模拟式相对于互联式来说走一下不足:一是提供的判决依据不够;二是信息不正确,模拟读写操作可能已经完成了但是由于网络拥塞的原因不能及时返回。而互联式有独立的状态通道可以保证传输优先级。         一个政府信息公开网站的信息存储系统,从场景上来看分为管理员发布信息和人们查看信息,这些信息基本上都是严肃的官方的非临时信息,因此主主模式不合适;同时这些信息基本上都是读多写少,平时更新频率不高,因此考虑主备或主从。从业务要求上看整体的TPS和实验要求不高,因此考虑主备即可,同时即使主集群宕机了能够在半天内恢复问题不大(毕竟这些网站不是经常使用的),这也就不需要做状态检测了。因此综合来说选择主备无状态检测的方案。

    作者回复: 分析到位

    2019-09-13
    7
  • 忠厚
    数据持久化信息我可能会选择主备模式,备机主做数据备份不提供读写操作。 添加一个redis缓存全量信息数据,做一个哨兵模式,实现故障切换,提高网站的可用性 应用上再使用个Ehcache堆外缓存,主要把热点信息放到应用里提升性能. 这样做相对主从模式,读并发压力过大时,扩容更容易

    作者回复: 缓存设计得比较复杂了,我认为ehcache没有必要

    2018-06-27
    6
  • zcode
    老师,主备负责方案,主挂了的时候,系统就会有一段时间不可用了吧?怎么样人工把备机改成主机呢,应用是不是还要修改数据ip的配置呢,具体怎么操作能不能详细说一下?

    作者回复: 可以改数据库的ip,也可以改应用系统上配置的数据库ip

    2019-07-02
    2
    4
  • 孙振超
    双机切换架构里面的中介模式是由db连接到中介,而后中介告诉它应该是主还是备,这种模式下要求db能够根据中介的返回结果实时的修改自己的模式,同时当客户端请求类型和当前模式不匹配时返回调用失败。对于mongo db原生支持还是可以,如果是原生不支持的db,是不是改为客户端直接链接中介,根据请求类型获取对应的db ip可用性更好些,如同zookeeper?又或者mongo db采用客户端直接链接中介是否也可以?因为中介模式本身对中介的高可用要求也比较高。

    作者回复: 客户端直连中介,需要中介理解存储系统的协议,这个做不到通用,MySQL Router可以实现你说的功能,但只适应MySQL,如果你基于zk做一套中介,可以支撑MySQL, mongodb等

    2018-08-06
    3
  • 王虹凯
    关于主主互相复制相关的有没有进一步讲解。

    作者回复: 没太多可讲的呢,主要是设计数据防冲突策略和冲突解决方案,例如A机房生成奇数数据,B机房生成偶数数据

    2018-07-06
    3
  • aaaaaaaaaaaas
    老师我是这么理解的,数据库主从实现读写分离保证了数据库的高性能,但是没有保证数据库的高可用,主机崩掉后,数据库不在提供写服务,而从库只能进行读操作,拒绝写服务。所以需要在主从之间加入主从切换的规则,当主机崩掉后,从机可以进行自主升为主机,从而保证高可用,这种机制就可以保证数据库的高性能和高可用,但是感觉这种复杂度太高了,真的会使用这种架构吗?

    作者回复: 用得很多啊😄

    2018-11-04
    2
收起评论
显示
设置
留言
83
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部