同城双活

同城双活背景

单个机房在出现不可抗拒的问题(如断电、断网等因素)时,会导致无法正常提供服务,会对业务造成潜在的损失。所以在金融级的高可用设计上,为了避免用户损失,需要一种可以基于同城或异地的多个不同机房之间的多活机制,在保障数据一致性的同时,能够最大程度降低由于机房的仅单点可用所导致的潜在高可用问题。同城双活就是其中的一种机制。

调用方式对比

在默认和同城双活模式下,调用方式是不同的,主要区别如下:

  • 默认模式:同一个工作空间下的多个可用区(对应物理机房)部署的应用节点是完全对等的,消息、服务等调用在工作空间内完全随机。在日常业务链路中,会出现多次跨机房调用,增加性能损耗。

  • 同城双活模式:会优先调用同可用区,同可用区找不到调用目标,再调用其他可用区。

最佳实践

最佳实践方案建议包含下述逻辑:

  • 每个应用的所有节点对等部署在同城的两个可用区。

  • 每个可用区都包含所有应用(数据存储除外),可以自包含地完成完整业务流程。

  • 业务请求进入一个可用区后,后续的调用链路都将收敛在同可用区内。

  • 只要调整入口负载均衡权重比例,就可以精确控制两个机房的流量分配。

基于上述方案的能力,可以衍生出蓝绿发布、同城容灾切换等高级应用场景。

数据访问代理配置

数据访问代理默认不支持同城双活模式,您需要进行手动配置,详见 配置同城双活模式