高可用存储架构:双机架构
作者:互联网
极客时间:《从 0 开始学架构》: 高可用存储架构:双机架构
1、引言
存储高可用方案的本质都是通过将数据复制到多个存储设备,通过数据冗余的方式来实现高可用,其复杂性主要体现在如何应对复制延迟和中断导致的数据不一致问题。因此,针对任何高可用存储方案,可从以下几个方面进行思考分析。
- 数据如何复制?
- 各个节点的职责是什么?
- 如何应对复制延迟?
- 如何应对复制中断?
常见的高可用存储架构有主备、主从、主主、集群、分区,根据业务的不同需求,会衍生出不同的点变种,针对业界通用的方案,来分析常见的双机高可用架构:主备、主从、主备 / 主从切换和主主。
2、主备复制
主备复制是最常见最简单的一种存储高可用方案,几乎所有的存储系统都提供了主备复制功能,如MySQL 、redis、mongodb等
基本实现
主备架构中的“备机”主要还是起到一个备份作用,并不承担实际的业务读写操作,如果要把备机改为主机,需要人工操作。
- 优点:
简单,具体体现在:
对于客户端来说,不需要感知备机的存在,即使灾难恢复后,原来的备机被人工修改为主机后,对于客户端来说,只是认为主机的地址换了而已,无须知道是原来的备机升级为主机。
对于主机和备机来说,双方只需要进行数据复制即可,无须进行状态判断和主备切换这类复杂的操作。 - 缺点:
备机仅仅只为备份,并没有提供读写操作,硬件成本上有浪费。
故障后需要人工干预,无法自动恢复。
3、主从复制
主机负责读写操作,从机只负责读操作,不负责写操作。
基本实现
与主备复制架构比较类似,主要的差别点在于从机正常情况下也是要提供读的操作。
- 优点
主从复制在主机故障时,读操作相关的业务可以继续运行。
主从复制架构的从机提供读操作,发挥了硬件的性能。 - 缺点
主从复制架构中,客户端需要感知主从关系,并将不同的操作发给不同的机器进行处理,复杂度比主备复制要高。
主从复制架构中,从机提供读业务,如果主从复制延迟比较大,业务会因为数据不一致出现问题。
故障时需要人工干预。
综合主从复制的优缺点,一般情况下,写少读多的业务使用主从复制的存储架构比较多。例如,论坛、BBS、新闻网站这类业务。
4、双机切换
上述两个方案存在两个共性问题。
- 主机故障后,无法进行写操作。
- 如果主机无法恢复,需要人工指定新的主机角色。
双机切换就为解决这两个问题,包括主备切换和主从切换两个方案。其实现为在原有方案的基础上增加“切换”功能,即系统自动决定主机角色,并完成角色切换。以主备切换为例,看其具体如何实现。
要实现一个完善的切换方案,必须考虑这几个关键的设计点:
- 主备间状态判断
主要包括两方面:状态传递的渠道,以及状态检测的内容。
状态传递的渠道:是相互间互相连接,还是第三方仲裁?
状态检测的内容:例如机器是否掉电、进程是否存在、响应是否缓慢等。 - 切换决策
主要包括几方面:切换时机、切换策略、自动程度。 - 数据冲突解决
常见架构
根据状态传递渠道的不同,常见的主备切换架构有三种形式:互连式、中介式和模拟式。
- 互连式
互连式就是指主备机直接建立状态传递的渠道,架构图请注意与主备复制架构对比。
在主备复制的架构基础上,主机和备机多了一个“状态传递”的通道,这个通道就是用来传递状态信息的。这个通道的具体实现可以有很多方式:
-
网络直连,或非网络直连(串口线连接)
-
主机发送状态给备机,也可以备机到主机来获取状态信息。
-
可以和数据复制通道共用,也可以独立一条通道。
-
中介式
中介式指的是在主备两者之外引入第三方中介,主备机之间不直接连接,而都去连接中介,并且通过中介来传递状态信息,其架构图如下:
中介式会将状态上传给中介这个角色,看似复杂了,但在状态传递和决策上更加简单了。理由如下:
状态决策更简单:主备机无须考虑多种类型的连接通道获取的状态信息如何决策的问题。
- 模拟式
模拟式指主备机之间并不传递任何状态数据,而是备机模拟成一个客户端,向主机发起模拟的读写操作,根据读写操作的响应情况来判断主机的状态。其基本架构如下:
主备机之间只有数据复制通道,而没有状态传递通道,备机通过模拟的读写操作来探测主机的状态,然后根据读写操作的响应情况来进行状态决策。
5、主主复制
主主复制指的是两台机器都是主机,互相将数据复制给对方,客户端可以任意挑选其中一台机器进行读写操作,下面是基本架构图。
主主复制架构具有如下特点:
- 两台都是主机,不存在切换的概念。
- 客户端无须区分不同角色的主机,随便将读写操作发送给哪台主机都可以。
事实上主主复制架构也并不简单,而是有其独特的复杂性,具体表现在:如果采取主主复制架构,必须保证数据能够双向复制,而很多数据是不能双向复制的。
因此,主主复制架构对数据的设计有严格的要求,一般适合于那些临时性、可丢失、可覆盖的数据场景。例如,用户登录产生的 session 数据(可以重新登录生成)、用户行为的日志数据(可以丢失)、论坛的草稿数据(可以丢失)等。
标签:状态,存储,架构,主机,备机,复制,主备,双机 来源: https://www.cnblogs.com/whiteBear/p/15782876.html