高可用存储架构:集群和分区

——————————————————摘抄自《极客时间 李运华 从0开始学架构》
数据集群
集群就是多台机器组合在一起形成一个统一的系统,这里的“多台”,数量上至少是 3 台;相比而言,主备、主从都是 2 台机器。根据集群中机器承担的不同角色来划分,集群可以分为两类:数据集中集群、数据分散集群。

1. 数据集中集群

数据集中集群与主备、主从这类架构相似,我们也可以称数据集中集群为 1 主多备或者 1 主多从。无论是 1 主 1 从、1 主 1 备,还是 1 主多备、1 主多从,数据都只能往主机中写,而读操作可以参考主备、主从架构进行灵活多变。下图是读写全部到主机的一种架构:

数据集中集群

虽然架构上是类似的,但由于集群里面的服务器数量更多,导致复杂度整体更高一些,具体体现在:

  • 主机如何将数据复制给备机

  • 备机如何检测主机状态

  • 主机故障后,如何决定新的主机

  1. 数据分散集群
    数据分散集群指多个服务器组成一个集群,每台服务器都会负责存储一部分数据;同时,为了提升硬件利用率,每台服务器又会备份一部分数据。

数据分散集群的复杂点在于如何将数据分配到不同的服务器上,算法需要考虑这些设计点:

  • 均衡性

  • 容错性

  • 可伸缩性
    数据分散集群和数据集中集群的不同点在于,数据分散集群中的每台服务器都可以处理读写请求,因此不存在数据集中集群中负责写的主机那样的角色。但在数据分散集群中,必须有一个角色来负责执行数据分配算法,这个角色可以是独立的一台服务器,也可以是集群自己选举出的一台服务器。如果是集群服务器选举出来一台机器承担数据分区分配的职责,则这台服务器一般也会叫作主机,但我们需要知道这里的“主机”和数据集中集群中的“主机”,其职责是有差异的。

数据分区

数据分区指将数据按照一定的规则进行分区,不同分区分布在不同的地理位置上,每个分区存储一部分数据,通过这种方式来规避地理级别的故障所造成的巨大影响。采用了数据分区的架构后,即使某个地区发生严重的自然灾害或者事故,受影响的也只是一部分数据,而不是全部数据都不可用;当故障恢复后,其他地区备份的数据也可以帮助故障地区快速恢复业务。

设计一个良好的数据分区架构,需要从多方面去考虑。

1. 数据量

2. 分区规则

3. 复制规则

常见的分区复制规则有三种:集中式、互备式和独立式。

集中式

集中式备份指存在一个总的备份中心,所有的分区都将数据备份到备份中心,其基本架构如下:


集中式备份

集中式备份架构的优缺点是:

  • 设计简单,各分区之间并无直接联系,可以做到互不影响。

  • 扩展容易。

  • 成本较高,需要建设一个独立的备份中心。

互备式

互备式备份指每个分区备份另外一个分区的数据,其基本架构如下:


互备式备份

互备式备份架构的优缺点是:

  • 设计比较复杂,各个分区除了要承担业务数据存储,还需要承担备份功能,相互之间互相关联和影响。

  • 扩展麻烦。

  • 成本低,直接利用已有的设备。

独立式

独立式备份指每个分区自己有独立的备份中心,其基本架构如下:


独立式备份

有一个细节需要特别注意,各个分区的备份并不和原来的分区在一个地方,用于规避同城或者相同地理位置同时发生灾难性故障的极端情况。

独立式备份架构的优缺点是:

  • 设计简单,各分区互不影响。

  • 扩展容易,新增加的分区只需要搭建自己的备份中心即可。

  • 成本高,每个分区需要独立的备份中心,备份中心的场地成本是主要成本,因此独立式比集中式成本要高很多。

问题:
既然数据集群就可以做到不同节点之间复制数据,为何不搭建一个远距离分布的集群来应对地理位置级别的故障呢?

数据集群可以做到在不同节点之间复制数据,确保当一个集群断网断电的情况下,仍然有机房可以读取数据,但是在对外提供服务时不仅仅考虑是否能读写数据,还需要考虑读写数据所需的耗时。距离过远意味着耗时较长,如果是搭建专线,成本也会非常高,因而从成本和用户体验两个纬度考量远距离同步集群不适合直接对外提供服务。

对于城市级数据集群出故障,主要还是通过短距异地(网络耗时在十毫秒级别)集群来解决,远距离集群主要还是用于做冷备、数据离线比对等功能。

你可能感兴趣的:(高可用存储架构:集群和分区)