← 返回航标笔记
#风险#架构

双线路冗余怎么搭:不是多买一家就完事

研究桌上的服务模块、资料清单与放大镜,呈现 API 服务选型中的证据比对

多中转并不自动带来高可用。模型名对齐、失败判定、流量比例与回切策略,四件事没定好,冗余反而放大故障。

业务对可用性有要求时,单线路是明显风险。但直接接两家站点,常常得到的是“两家一起挂”或者“切换后输出风格突变”。

第一件事是模型名对齐。不同站点对同一模型的命名不同,需要在自己这侧维护一张映射表:逻辑模型名到各站点实际名称。切换时按逻辑名路由,避免代码里出现站点专用名字。

第二件事是失败判定。什么算失败?连接超时、5xx、429、还是首字超时?建议定义三级:连接级失败立即切换;协议级失败(4xx)不切换而是告警;质量级失败(输出异常短、拒绝)按采样切换。判定不清会导致来回抖动。

第三件事是流量比例。主流做法是 90/10 或 80/20,让备用线路持续有真实流量,否则真出事时才发现备用线路的模型早就下架了。备用线路的成本可以用小流量控制。

第四件事是回切策略。切换后不要立刻切回,设一个观察窗口,例如 30 分钟内成功率稳定在阈值以上再回切。回切本身也是一次变更,频繁回切会放大抖动。

还有一处容易忽略:状态与幂等。两条线路的重试可能造成重复计费或重复副作用,需要在请求层加唯一标识,并在账务侧做去重。

把这四件事写成配置而不是代码里的 if/else,切换逻辑才能被验证与被审计。双线路的价值不在于“多一家”,而在于把故障的影响面从全量降到部分。

最后是监控口径统一。两条线路的指标必须能在同一张图上比较:成功率、首 token 时间、完整响应时间、单位成本,四项都要有。口径不一致时,切换决策会变成拍脑袋;口径统一后,切换可以做成规则,甚至交给网关自动执行。