第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、复制规则
- 常见的3种分区复制规则:集中式、互备式、独立式
- 集中式备份:存在一个总的备份中心,所有的分区都将数据备份到备份中心
- 集中式备份架构优缺点:设计简单、扩展容易、成本较高
- 互备式备份:每个分区备份另外一个分区的数据
- 互备式备份架构优缺点:设计较复杂、扩展麻烦、成本低
- 独立式备份:每个分区有自己的异地独立备份中心
- 独立式备份架构优缺点:设计简单、扩展容易、成本很高