跳到主要内容
solidway

切换语言

中文English

主题

SolidwayLLM 网关

Solidway v0.1.0 已以 AGPL-3.0 发布,源码与 Releases 在 GitHub 上。文档正在按发布版本重写:除「快速开始」与「参考」外,其余页面仍在描述计划中的行为。当前权威说明见仓库内的 docs/getting-started.md 与 docs/architecture.md。

选号与换号

一个请求如何选中凭据,失败之后又发生什么。

没有需要配置的「回退链」。一条路由是一个凭据池,网关为每个请求挑一条;如果这次失败说明凭据本身有问题, 就再挑下一条重试——仍然发生在首字节之前。

单个请求的流程

1. 粘性命中?          → 先试那条凭据(前提是健康)
2. 选号                → 按策略 + 评分给池子排序
3. 尝试                → 转发,受连接 / 首字节超时约束
4. 失败分类            → 可标记? → 换下一个候选
                        不可标记? → 原样返回上游响应
5. 没有候选了          → 返回最后一次上游错误

每个候选在单个请求内最多尝试一次;已经试过的凭据即使再被选中也会跳过。

什么情况会「换下一个」

只有说明凭据本身有问题的失败才会继续换:

上游结果 处置
401 凭据退役,换下一个候选
403 凭据冷却,换下一个候选
429 冷却(区分配额与限流),换下一个候选
5xx 冷却,换下一个候选
网络错误 / 连接超时 / 首字节超时 冷却,换下一个候选
其他 4xx 不标记,响应直接返回客户端

每种标记的细节见健康标记。

超时

超时 作用范围 在哪里配置
连接 建立到上游的连接 系统 → 网络
首字节 等待响应头 系统 → 网络
Body / 流 流打开后读取单个分块 内部预算

慢的一次尝试不会吃掉其他候选的预算;下一个候选重新拥有自己的连接与首字节超时。

全部失败时

客户端收到的是最后一次上游失败(状态码与原样响应体);如果连一次尝试都发不出去——例如路由里所有凭据 都已退役或在冷却——则返回网关错误,错误码为 route_exhausted。响应体里没有「逐次尝试清单」这种信封; 单请求的轨迹在用量明细与故障记录里。

会话粘性

如果 (路由, 模型, 会话标识) 有未过期的粘性映射,那条凭据会被优先尝试。健康优先于粘性:冷却或已退役的 凭据会被跳过。

下一步