以下页面描述网关的预期行为。开源版本与企业版本正在拆分中,首个正式版本发布后细节会同步更新。
故障转移
有序回退链、每次尝试的预算,以及什么情况才切到下一个目标。
一条路由可以声明一条有序的 target 链。系统按顺序尝试每个 target,直到有一个返回成功响应。
回退链
回退链是在控制台里挂在某条路由上的一组 target。每个 target 指定一个 provider, 可选地再指定模型与凭据。
路由 POST /v1/messages
├─ 1. anthropic claude-sonnet-5-5
├─ 2. bedrock claude-sonnet-5-5
└─ 3. openai gpt-6-sol
按列表顺序尝试。第一个返回 2xx 的 target 结束整条链。
调整这个列表的顺序是一次控制台操作,立即作用于在途流量。
尝试预算
每次尝试带自己的超时。上游变慢不会吃掉整个请求的时限,因为时限是分配到链上各次尝试的, 而不是被某一次独占。
| 预算 | 作用范围 | 在哪里设置 |
|---|---|---|
| 单次尝试 | 单个 target,含针对它的重试 | 在该 target 上 |
| 整个请求 | 整条链,含每一次尝试 | 在该路由上 |
整个请求的预算耗尽时,请求以 504 结束,响应体中描述已经发生的每一次尝试。
重试与轮转
失败的尝试会先被分类,再决定动作。分类结果决定:是重试同一个 target,是换用其他凭据, 还是推进到链上的下一个 target。
- 瞬时故障在同一 target 上退避重试,带指数退避与抖动
- 与凭据绑定的故障直接换用池中其他密钥,而不是继续等待
- 由请求本身引起的故障不重试,直接结束请求 —— 因为换任何 target 都会得到同样结果
完整的分类表在熔断页,两者共用同一套分类。
所有目标都失败时
客户端收到 503,响应体逐个列出每次尝试:目标、状态码,以及上游响应的截断副本。
整条链按顺序记录(含重试),因此不必去关联日志就能读懂最终失败的原因。