双机房架构(一主一从)

这种架构属于异地双活相对比较简单的实现方案。

服务可以做到无状态,但是数据库无法实现无状态。

服务

服务虽然是无状态的,也可以把服务+基础依赖服务按照机房完全隔离开来。

这样一个机房如果出现问题,可以将流量全部切换到另一边。

数据库

重点:

1)数据库通过主从同步,机房故障时,可以可以将另一个机房的从升级为主。

通过主从切换实现数据库的机房切换。

2)因为 CAP 的限制,所以不同的机房只能单边写入数据到数据库。

疑问:是否存在主从延迟的问题?

优点:相对架构比较简单,业务适用性比较强。

缺点:主从切换时,存在一定的延迟。数据库的主从切换,需要一定的经验。

后面考虑针对数据库的主从切换深入学习一下。

双机房架构(双主)

说明

如果我们对数据要求没有那么严格,比如风控、预警等系统。

可以设计双主架构。

架构图

图中隐去了数据库的域名解析。

主要调整

写入数据库时,通过统一的 db-proxy 代理层。双写到2个机房的数据库中。

当然,根据 CAP。我们肯定要有所舍弃。

比如报警等场景,我们可以舍弃数据的完全一致性,换来可用性+分区。

优点:机房故障,单边直接数据全量可用,不用做太多事情。

缺点:需要双写同步,耗时比较长,会出现数据不一致的问题。单边停机之后,数据的同步也是需要考虑的内容。

参考资料

https://www.51cto.com/article/781506.html