一、同城双活
同城双活是在同城或相近区域内建立两个机房。同城双机房距离比较近,通信线路质量较好,比较容易实现数据的同步复制 ,保证高度的数据完整性和数据零丢失。同城两个机房各承担一部分流量,一般入口流量完全随机,内部RPC调用尽量通过就近路由闭环在同机房,相当于两个机房镜像部署了两个独立集群,数据仍然是单点写到主机房数据库,然后实时同步到另外一个机房。下图展示了同城双活简单部署架构:
服务调用基本在同机房内完成闭环,数据仍然是单点写到主机房数据储存,然后实时同步复制到同城备份机房。当机房A出现问题时候运维人员只需要通过GSLB或者其他方案手动更改路由方式将流量路由到B机房。同城双活可有效用于防范火灾、建筑物破坏、供电故障、计算机系统及人为破坏引起的机房灾难。考虑实施复杂度,可先期先实现同城双活,后续在同城双活基础上建设两地三中心的高可用容灾架构。
同城双活方案优势:
(1)服务同城双活,数据同城灾备,同城不丢失数据情况下跨机房级别容灾。
(2)架构方案较为简单,核心是解决底层数据双活,由于双机房距离近,通信质量好,底层储存例如数据库可以采用同步复制,有效保证双机房数据一致性。
同城双活方案劣势:
(1)数据库写数据存在跨机房调用,在复杂业务以及链路下频繁跨机房调用增加响应时间,影响系统性能和用户体验。
(2)保证同城市地区容灾,当服务所在的城市或者地区网络整体故障、发生不可抗拒的自然灾害时候有服务故障以及丢失数据风险。
(3)服务规模足够大(例如单体应用超过万台机器),所有机器链接一个主数据库实例会引起连接不足问题。
二、两地三中心方案
所谓两地三中心是指同城双中心 + 异地灾备中心。异地灾备中心是指在异地的城市建立一个备份的灾备中心,用于双中心的数据备份,数据和服务平时都是冷的,当双中心所在城市或者地区出现异常而都无法对外提供服务的时候,异地灾备中心可以用备份数据进行业务的恢复。部署架构如下:
两地三中心方案优势:
(1)服务同城双活,数据同城灾备,同城不丢失数据情况下跨机房级别容灾。
(2)架构方案较为简单,核心是解决底层数据双活,由于双机房距离近,通信质量好,底层储存例如数据库可以采用同步复制,有效保证双机房数据一致性。
(3)灾备中心能防范同城双中心同时出现故障时候利用备份数据进行业务的恢复。
两地三中心方案劣势:
(1)数据库写数据存在跨机房调用,在复杂业务以及链路下频繁跨机房调用增加响应时间,影响系统性能和用户体验。
(2)服务规模足够大(例如单体应用超过万台机器),所有机器链接一个主数据库实例会引起连接不足问题。
(3)出问题不敢轻易将流量切往异地数据备份中心,异地的备份数据中心是冷的,平时没有流量进入,因此出问题需要较长时间对异地灾备机房进行验证。