这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
跨地域部署
场景
两年后,业务扩展到全国。
用户分布:
- 华北:30%(北京、天津等)
- 华东:40%(上海、杭州等)
- 华南:30%(广州、深圳等)
问题:
- 南方用户访问北京服务器延迟高
- 跨运营商访问慢
- 单地域故障影响全国
解决方案:多地域部署
架构设计
多地域路由
GeoDNS 智能解析
设计流程
GeoDNS 配置:部署操作
- 步骤 1:准备运行环境并启动服务
- 步骤 2:确认用户来源、目标地域和可用区健康状态
- 步骤 3:根据延迟、健康状态和一致性要求调整地域策略
- 步骤 4:返回地域路由结果,并记录复制或切换状态
关注点:路由准确性、跨区延迟、一致性和故障切换。
应用层路由兜底
设计流程
应用层路由
- 步骤 1:选择合适地域并路由用户请求
- 步骤 2:确认用户来源、目标地域和可用区健康状态
- 步骤 3:根据延迟、健康状态和一致性要求调整地域策略
- 步骤 4:返回地域路由结果,并记录复制或切换状态
关注点:路由准确性、跨区延迟、一致性和故障切换。
数据同步
主从同步
北京(主) → 上海(从)
│
└→ 广州(从)
使用 MySQL GTID 实现自动同步缓存同步
设计流程
缓存同步
- 步骤 1:读取、刷新或失效缓存数据
- 步骤 2:按本节策略读取、写入缓存并处理过期或失效
- 步骤 3:校验身份、密钥或权限
关注点:命中率、回源压力、TTL 和异常 key 处理。
真实上线还要注意
- 不是所有请求都适合就近处理。 查询天气可以就近读,修改套餐、扣费这类操作最好先回到主地域。
- 路由要看健康状态。 最近的机房如果不健康,就不能继续把用户送过去。
- 缓存也要分地域想。 北京缓存更新了,上海用户什么时候能看到新结果,需要提前接受这个延迟。