日期:2026-11-08
我们的 AI 网关早期所有接入方都打到中心 Region,不管用户在哪个城市,请求都跨省甚至跨国绕一圈。结果是跨地域延迟高,中心 Region 一抖,全站的推理调用都慢,客户投诉集中爆发。更麻烦的是,中心 Region 做升级或演练时,没有地方能接住流量,只能挑深夜低峰硬上,运维心惊胆战。
我们当时对容灾的理解还停留在"有备份就行",实际一演练才发现,备份 Region 平时没流量、配置落后于主,真切过去一堆不兼容。这个项目要把就近路由和跨 Region 容灾做成日常在跑的能力,而不是出事才临时抱佛脚。
落地后,网关按接入方的地域标识做就近路由,请求优先打到同 Region 或最近 Region 的推理集群,跨地域延迟明显降下来。每个 Region 都挂独立健康探测,探活数据实时上报,中心控制台能看到各 Region 的存活和负载。
容灾侧,主 Region 异常时,流量按预设权重切到备用 Region,切换是自动触发加人工确认的混合模式,避免误判导致的抖动切换。我们做了定期的容灾演练,把真实流量小比例引到备用 Region 跑,验证配置一致性,而不是等到真出事才动手切。后台看跨地域平均延迟、Region 切换时延、容灾切换成功率和就近命中率。
数据侧我们明确了边界:推理请求本身无状态,跨 Region 切换不影响结果;但调用计量和审计日志是 Region 本地先落,再异步汇聚,切换瞬间允许极短窗口的计量延迟,不让一致性要求拖慢切换。
绕不开的是地域识别与就近路由。接入方的地域不能只看 IP,IP 库不准会把请求导错 Region。我们让接入方在鉴权阶段带上地域标签,结合 IP 库做校验,冲突时以显式标签为准,这样就近才靠谱。
紧接着要处理的是 Region 健康探测的准确性。探测太频繁有开销,太稀疏又发现不了问题。我们按 Region 级别设了分层探测:快速心跳探存活,慢速全链路探真实推理能力,只有全链路挂了才触发切换,避免单点抖动误切。
再往下是跨 Region 切换抖动。切换不是一瞬间全切,而是按权重渐进,先切一小部分验证备用 Region 能扛,再逐步放大,异常立刻回退。我们当时图快做过一次全切,结果备用 Region 配置有个小差异,半分钟全站异常,从此改成渐进式。
最后是容灾演练常态化。备用 Region 平时无流量,配置容易漂移。我们把演练做成固定动作,每周小比例引流跑一次,发现配置差异当场修,保证真出事时备用 Region 是热的、可信的。
案例片段(已脱敏): 就近路由与 Region 健康探测配置(节选):
geo_routing: prefer_explicit_region_tag: true # 显式地域标签优先 ip_geo_fallback: true health: heartbeat_interval_sec: 5 full_link_probe_sec: 30 # 全链路探真实推理 switch_on_full_link_fail: true failover: mode: auto_with_confirm ramp_weights: [0.1, 0.3, 0.6, 1.0] # 渐进切流 auto_rollback_on_error: true drill: weekly_small_ratio: 0.05演练日志:主 Region 注入故障后,流量 12s 内完成渐进切换,错误率峰值 0.7%。
就近路由上线后,跨地域平均延迟从一百二十毫秒量级降到四十毫秒以内,用户侧的首字延迟体感明显改善。Region 切换时延,从探测到完成渐进切流,控制在十二秒左右,且错误率峰值低于百分之一,没有出现长时间大面积失败。
容灾演练常态化之后,备用 Region 的配置漂移问题基本清零,每次演练都能平滑接住小比例流量,不再出现"切过去就出兼容问题"的情况。就近命中率稳定在九成五以上,说明地域识别是准的。文中数据为项目复盘口径,均为示意值,非审计级精确数字。
我们当时担心的计量在切换瞬间丢数,实际用 Region 本地先落再异步汇聚的方案,只引入了亚秒级延迟,没有真实丢失,这点上当初的顾虑偏重了。
AI 网关的容灾别等出事才切,平时就把健康探测和切换路径跑熟,备用 Region 没流量就会配置漂移,真切过去必出兼容问题。就近路由的地域识别不能只信 IP 库,让接入方带显式标签并做校验,导错 Region 比不就近更糟。
跨 Region 切换必须渐进式,按权重一步步放,配自动回退,全切一次吃过亏就再也不敢了。容灾演练要固定成周级动作,小比例引流验证,比一年一次的大演练管用。数据一致性边界要提前划清,别让一致性要求拖慢切换。
踩过一次全切的坑之后,我对容灾的理解彻底变了,备份 Region 平时没流量就是会配置漂移,真切过去必出事。现在我们把它当成周级固定动作,小比例引流验证,比一年一次大演练踏实得多。这点是用一次半分钟全站异常换来的教训,运维那边的顾虑我当时没听进去,后来自己认了。就近路由的地域识别也得靠显式标签校验,光信 IP 库曾把请求导错过 Region,这种细节只有线上才暴露,离线测一百遍也发现不了。
顺带,切换的渐进权重别跳太快,我们试过直接拉到满,结果备用 Region 一下被压垮,还是分步放稳。健康探测的灵敏度也得反复调,太灵会来回横跳,太钝又发现不了真故障,这个区间是用几次误切换来的。