一、双机高可用

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)复制规则集中式: 备份储存在总的备份中心互备式:每个分区随机储存另外一个分区的备份数据独立式:每个分区有自己独立的备份中心,规则已提前指定好