高可用存储架构:集群和分区
极客时间:《从 0 开始学架构》:高可用存储架构:集群和分区
两种常见的高可用存储架构:数据集群和数据分区。
1、数据集群
使用多台服务器来存储数据即为数据集群架构,集群指的是多台(至少三台)机器组合在一起形成一个统一的系统,根据集群中机器承担的不同角色可分为两类:数据集中集群和数据分散集群。
1)数据集中集群
类似于主备、主从架构,数据都往主机中写,读操作可参考主备、主从架构灵活多变。如下图:
由于集群里面的服务器数量更多,导致复杂度整体更高一些,具体体现在:
-
主机如何将数据复制给备机
要考虑如何降低主机复制压力;多条复制通道,可能会导致多个备机之间数据不一致 -
备机如何检测主机状态
多台备机都需要对主机状态进行判断,而不同的备机判断的结果可能是不同的,如何处理不同备机对主机状态的不同判断,是一个复杂的问题。
主机故障后,如何决定新的主机
2). 数据分散集群
数据分散集群指多个服务器组成一个集群,每台服务器都会负责存储一部分数据;同时,为了提升硬件利用率,每台服务器又会备份一部分数据。
数据分散集群的复杂点在于如何将数据分配到不同的服务器上,算法需要考虑这些设计点:
- 均衡性
- 容错性
- 可伸缩性
当集群容量不够,扩充新的服务器后,算法能够自动将部分数据分区迁移到新服务器,并保证扩容后所有服务器的均衡性。
数据分散集群和数据集中集群的不同点在于,数据分散集群中的每台服务器都可以处理读写请求,因此不存在数据集中集群中负责写的主机那样的角色。但在数据分散集群中,必须有一个角色来负责执行数据分配算法,这个角色可以是独立的一台服务器,也可以是集群自己选举出的一台服务器。如果是集群服务器选举出来一台机器承担数据分区分配的职责,则这台服务器一般也会叫作主机,但我们需要知道这里的“主机”和数据集中集群中的“主机”,其职责是有差异的。
数据集中集群架构中,客户端只能将数据写到主机;数据分散集群架构中,客户端可以向任意服务器中读写数据。正是因为这个关键的差异,决定了两种集群的应用场景不同。一般来说,数据集中集群适合数据量不大,集群机器数量不多的场景。例如,ZooKeeper 集群,一般推荐 5 台机器左右,数据量是单台服务器就能够支撑;而数据分散集群,由于其良好的可伸缩性,适合业务数据量巨大、集群机器数量庞大的业务场景。例如,Hadoop 集群、HBase 集群,大规模的集群可以达到上百台甚至上千台服务器。
2、数据分区
因自然灾害等不可抗因素,需要基于地理级别的故障来设计高可用架构,这就是数据分区架构产生的背景。
数据分区指将数据按照一定的规则进行分区,不同分区分布在不同的地理位置上,每个分区存储一部分数据,通过这种方式来规避地理级别的故障所造成的巨大影响。采用了数据分区的架构后,即使某个地区发生严重的自然灾害或者事故,受影响的也只是一部分数据,而不是全部数据都不可用;当故障恢复后,其他地区备份的数据也可以帮助故障地区快速恢复业务。
设计一个良好的数据分区架构,需要从多方面去考虑。
- 数据量
数据量的大小直接决定了分区的规则复杂度。 - 分区规则
地理位置有近有远,因此可以得到不同的分区规则,包括洲际分区、国家分区、城市分区。具体采取哪种或者哪几种规则,需要综合考虑业务范围、成本等因素。
通常情况下,洲际分区主要用于面向不同大洲提供服务,由于跨洲通讯的网络延迟已经大到不适合提供在线服务了,因此洲际间的数据中心可以不互通或者仅仅作为备份;国家分区主要用于面向不同国家的用户提供服务,不同国家有不同语言、法律、业务等,国家间的分区一般也仅作为备份;城市分区由于都在同一个国家或者地区内,网络延迟较低,业务相似,分区同时对外提供服务,可以满足业务异地多活之类的需求。 - 复制规则
常见的分区复制规则有三种:集中式、互备式和独立式。
- 集中式
集中式备份指存在一个总的备份中心,所有的分区都将数据备份到备份中心,其基本架构如下:
集中式备份架构的优缺点是:
- 设计简单,各分区之间并无直接联系,可以做到互不影响。
- 扩展容易,如果要增加第四个分区(例如,武汉分区),只需要将武汉分区的数据复制到西安备份中心即可,其他分区不受影响。
- 成本较高,需要建设一个独立的备份中心。
- 互备式
互备式备份指每个分区备份另外一个分区的数据,其基本架构如下:
互备式备份架构的优缺点是:
- 设计比较复杂,各个分区除了要承担业务数据存储,还需要承担备份功能,相互之间互相关联和影响。
- 扩展麻烦
- 成本低,直接利用已有的设备。
- 独立式
独立式备份指每个分区自己有独立的备份中心,其基本架构如下:
特别注意,各个分区的备份并不和原来的分区在一个地方。这样做的主要目的是规避同城或者相同地理位置同时发生灾难性故障的极端情况。
独立式备份架构的优缺点是:
- 设计简单,各分区互不影响。
- 扩展容易,新增加的分区只需要搭建自己的备份中心即可。
- 成本高,每个分区需要独立的备份中心,备份中心的场地成本是主要成本,因此独立式比集中式成本要高很多。