007-2271-不出局

高可用存储架构:双机、集群、分区

2019-02-28  本文已影响1人  短暂瞬间

第76篇

极客时间《从0开始学架构》课程笔记。

存储高可用方案的本质:数据冗余,即把数据复制到多个存储设备
存储高可用方案的复杂性:如何应对复制延迟和中断导致的数据不一致问题
常见高可用存储架构有3类:
1、双机高可用:主备、主从、主备/主从切换、主主
2、数据集群:3台以上机器组合成一个系统
3、数据分区:不同分区的数据分布在不同的地理位置,每个分区存储一部分数据

一、双机高可用架构

主备复制

定义:备机只备份数据,不进行读写,切换需要人工操作

主备方案架构

优点:简单
1、客户端无需知道备机升级为主机,备机修改为主机通过人工操作
2、主机备机只需要进行数据复制,不用判断服务状态

缺点:
1、备机未提供读写操作,只进行数据备份,硬件成本有浪费
2、故障恢复时需要人工干预,无法自动恢复

应用场景:公司内部的后台管理系统。如学生管理系统、员工管理系统、文档管理系统

主从复制

定义:主机负责读写操作,从机只负责读操作,不负责写操作

主从方案架构

优点:与主备相比
1、主机故障时,读操作相关业务正常运行
2、从机提供读操作,发挥了硬件性能

缺点:
1、客户端需要感知主从关系,复杂度比主备复制要高
2、如果主从复制延迟比较大,业务会出现数据不一致问题
3、出现故障时需要人工干预

应用场景:写少读多的业务。如论坛、BBS、新闻网站、政府门户

双机切换

定义:
主备复制和主从复制在主机出现故障时存在两个问题:
1、无法进行写操作;2、需要人工指定新的主机
双机切换就是在原方案基础上增加『切换』功能,由系统自动决定主机角色并完成切换。双机切换包括主备切换个主从切换两种方案。

设计关键:
1、主备间状态判断:状态传递的渠道,以及状态检测的内容
2、切换决策:切换时机、切换策略、自动程度
3、数据冲突解决:新旧主机之间可能存在数据冲突

常见的3种切换架构:互连式、中介式和模拟式

互连式

定义:主备机直接建立状态传递的渠道

互连式切换架构

缺点:状态传递的通道本身有故障时备机自动升级为主机,出现两个主机

中介式

定义:在主备两者之外引入第三方中介,通过中介来传递状态信息

中介式切换架构

优点:主备机的连接管理和状态决策都更简单

缺点:中介本身需要高可用,否则会进入双备机状态

应用:推荐基于 ZooKeeper 搭建中介式切换架构

模拟式

定义:主备机之间不传递任何状态数据,备机模拟成一个客户端,向主机发起模拟的读写操作,根据读写操作的响应情况来判断主机的状态

模拟式切换架构

优点:实现更加简单,省去了状态传递通道的建立和管理工作

缺点:状态信息只有响应信息,基于有限的状态来做状态决策,可能出现偏差

主主复制

定义:两台机器都是主机,互相将数据复制给对方

主主复制架构

优点:无须状态信息传递,也无须状态决策和状态切换

缺点:如果采取主主复制架构,必须保证数据能够双向复制,而很多数据是不能双向复制的,如用户ID、库存数据、余额数据等

应用场景:适合于那些临时性、可丢失、可覆盖的数据场景。如用户登录产生的 session 数据(可以重新登录生成)、用户行为的日志数据(可以丢失)、论坛的草稿数据(可以丢失)等

二、数据集群

定义:单台(主机)服务器无法存储和处理大量的业务数据,必须使用多台服务器来存储数据。集群可以分为两类:数据集中集群、数据分散集群

数据集中集群:一主多备或者一主多从

数据集中式集群

复杂度体现:
1、主机如何将数据复制给备机:存在多条复制通道、可能会导致多个备机之间数据不一致
2、备机如何检测主机状态:如何处理不同备机对主机状态的不同判断
3、主机故障后,如何决定新的主机:只能允许一台备机升级为主机,选择哪一台

应用场景:适合数据量不大,集群机器数量不多的场景。例如,ZooKeeper 集群,一般推荐 5 台机器左右

数据分散集群

复杂点:如何将数据分配到不同的服务器上,算法需要考虑均衡性、容错性和可伸缩性

特点:
1、数据分散集群中的每台服务器都可以处理读写请求,客户端可以向任意服务器中读写数据
2、必须有一个角色来负责执行数据分配算法,这个角色可以是独立的一台服务器,也可以是集群自己选举出的一台服务器

应用场景:适合业务数据量巨大、集群机器数量庞大的业务场景。例如,Hadoop 集群、HBase 集群,可以达到上百台甚至上千台服务器

三、数据分区

定义

将数据按照一定的规则进行分区,不同分区分布在不同的地理位置上,每个分区存储一部分数据,目的是规避地理级别的故障所造成的巨大影响

设计关键

1、数据量

2、分区规则

3、复制规则

上一篇 下一篇

猜你喜欢

热点阅读