跨地域部署

场景

两年后,业务扩展到全国。

用户分布:

  • 华北:30%(北京、天津等)
  • 华东:40%(上海、杭州等)
  • 华南:30%(广州、深圳等)

问题:

  • 南方用户访问北京服务器延迟高
  • 跨运营商访问慢
  • 单地域故障影响全国

解决方案:多地域部署

架构设计

多地域路由

GeoDNS 智能解析

设计流程
GeoDNS 配置:部署操作
  1. 步骤 1:准备运行环境并启动服务
  2. 步骤 2:确认用户来源、目标地域和可用区健康状态
  3. 步骤 3:根据延迟、健康状态和一致性要求调整地域策略
  4. 步骤 4:返回地域路由结果,并记录复制或切换状态
关注点:路由准确性、跨区延迟、一致性和故障切换。

应用层路由兜底

设计流程
应用层路由
  1. 步骤 1:选择合适地域并路由用户请求
  2. 步骤 2:确认用户来源、目标地域和可用区健康状态
  3. 步骤 3:根据延迟、健康状态和一致性要求调整地域策略
  4. 步骤 4:返回地域路由结果,并记录复制或切换状态
关注点:路由准确性、跨区延迟、一致性和故障切换。

数据同步

主从同步

北京(主) → 上海(从)

     └→ 广州(从)

使用 MySQL GTID 实现自动同步

缓存同步

设计流程
缓存同步
  1. 步骤 1:读取、刷新或失效缓存数据
  2. 步骤 2:按本节策略读取、写入缓存并处理过期或失效
  3. 步骤 3:校验身份、密钥或权限
关注点:命中率、回源压力、TTL 和异常 key 处理。
真实上线还要注意
  • 不是所有请求都适合就近处理。 查询天气可以就近读,修改套餐、扣费这类操作最好先回到主地域。
  • 路由要看健康状态。 最近的机房如果不健康,就不能继续把用户送过去。
  • 缓存也要分地域想。 北京缓存更新了,上海用户什么时候能看到新结果,需要提前接受这个延迟。