一、三数据中心(数据强一致性,延迟高,吞吐量低,安全性高)
三个数据中心都不在同一个地方,写入完主节点后,同时同步到2个从节点
优点:数据一致性高,主节点宕机,选择一个从节点接管主节点
缺点:延时长,同步提交数据,需等待从节点同步完成;主节点写完后,去从节点读可能读不到数据,还未同步过来
优化:读写都放在同一个数据中心,另外两个数据中心做备份用
二、两地三中心(数据强一致性,延迟低,吞吐量高,安全性稍微降低)
2个机房放在同一个城市,另一个机房放在另一个城市
优点:同城市机房延时低,不用等第三个机房的结果;同城的两个机房都可以利用上,读可以随便在这两个机房中的哪个;任何一个机房出问题都不影响数据一致性。
缺点:同一个城市出现网络问题,可能同城的2个机房都出现问题,导致数据不可用。
三、两数据中心(数据最终一致性,吞吐量高,安全性低,可能丢失数据)
一个机房写入,通过binlog方式异步同步到另一个机房,有延迟情况下,日志同步可能不及时导致数据丢失
高可用和容灾分析
对于三数据中心方案和两地三中心方案,我们能得到的保障是任意一个数据中心故障时,集群能自动恢复服务,不需要人工介入,并能保证数据一致性。注意各种调度策略都是用于帮助性能优化的,当发生故障时调度机制总是第一优先考虑可用性而不是性能。
对于两数据中心 + binlog 同步的方案,主集群内少量节点故障时也能自动恢复服务,不需要人工介入,并能保证数据一致性。当整个主集群故障时,需要人工切换至从集群,并可能发生一些数据丢失,数据丢失的数量取决于同步延迟,和网络条件有关。