乐趣区

储存高可用架构

一、双机高可用

1、主备方式

主机和备机双方只需要进行数据复制即可,无须进行状态判断和主备切换这类复杂的操作

应用场景:内部的后台管理系统

2、主从复制

从机需要提供读操作,需要考虑主从复制延迟、客户端感知主从关系等问题

应用场景:写少读多的新闻网站

3、双机切换

设计要点:

​ 1)主备间的状态传递的内容 和渠道

​ 2)切换时机和切换策略

​ 3)如何解决数据冲突

常见架构

1)互联式

​ 主备机直接建立状态传递的渠道

​ 设计须知:通道故障问题比较难处理

2)模拟式

​ 备机模拟成客户端,根据读写操作的响应情况来判断主机状态

​ 设计须知:判断有限,可能出现双主

3)中阶式

​ 引入 zookeeper 或 keepalived 这样的第三方中介,主备上报状态到中介,中介最终决策,例如 mongodb

​ 设计须知:必须保证中介的高可用

4、主主复制

两台服务器都是主机,相互之间复制,客户端任意选择读写

设计须知:不适用注册,库存等数据

二、集群高可用

1、数据集中集群

设计要点:

​ 1)主机如何将数据复制给备机

​ 消息队列同步、备机相互复制

​ 2)备机如何检测主机状态

​ 通过中介 zookeeper 等

​ 3)主机故障后,如何选择新主机

​ 通过中介 zookeeper 等

适用场景:数据量不大,集群机器数量不多,例如 zookeeper 集群

2、数据分散集群

设计要点:

​ 1)均衡性

​ 2)容错性

​ 3)可伸缩性

适用场景:数据量巨大,集群机器数量庞大,例如 hbase 集群、Elasticsearch 集群、gossip 协议集群

三、分区高可用

不同分区处于不同地理位置,每个分区储存一部分数据,降低故障影响比例

设计要点

1)分区规则

国家间的分区仅用于数据备份,城市分区用于解决业务上的异地多活

2)数据量

数据量越大,设计复杂越大

3)复制规则

集中式: 备份储存在总的备份中心

互备式:每个分区随机储存另外一个分区的备份数据

独立式:每个分区有自己独立的备份中心,规则已提前指定好

退出移动版