模型
渠道路由与失败转移
ToRouter 如何为请求挑选渠道,以及上游失败时如何透明重试。
调用模型时,ToRouter 要从所有能服务该模型的渠道里挑一条。挑选规则确定,结果透明:你每次只会看到一个响应。
渠道是怎么选出来的
每个请求都走这条短流水线:
候选筛选:列出当前访问权限下所有支持该模型的渠道。
优先级过滤:在候选里只保留优先级数值最小的那一档(priority 是偏好序号,小者优先)。
LRU 抢断:同优先级里偏好最近最少使用的渠道。
加权随机:若仍有多个候选,在剩余候选中按系统配置的权重随机抽取一条。
priority=10, weight=3 永远赢 priority=20, weight=10。同优先级桶内,weight 越大流量份额越大。
失败转移 (Failover)
上游会挂。ToRouter 在服务端处理,让你的客户端看到一个干净响应。
当所选渠道返回瞬时错误 —— 5xx、429 或表示"换别的试"的特定 4xx(如配额耗尽、key 被吊销)—— 网关会:
- 在任何字节抵达你的 TCP socket 之前丢弃失败响应。
- 用同一套 priority → LRU → weight 规则挑下一候选。
- 透明重发请求。
- 把第一个成功响应返回给你。
终态错误(400、404、内容策略违规)会立刻返回 —— 重试无用。
流式请求只能在首个 SSE 字节发出前进行 failover。一旦流已开始,上游断开会以流中错误的形式上抛 —— 网关无法回收已发出的字节。
查看真实命中的渠道
每个网关响应都会记录服务它的渠道。去 用量页 看 —— 每行展示模型、渠道、延迟与结果。