Issues / #772

#772 Community project: strata-router, a multi-node router for Strata / 社区项目:Strata 多节点路由入口

closed · @konijiwa110 · 1 comentários · No GitHub

Server & APIDocumentation

Descrição

Hi, thanks for Strata! I run it on a couple of machines and wrote a small router in front of them. Sharing it in case it is useful to others:

**https://github.com/konijiwa110/strata-router** (MIT)

### What it does

Clients point at one endpoint and requests are spread across several Strata nodes. The API is the same as Strata's (`/v1/messages`, `/v1/chat/completions`, `/v1/responses`, `/v1/models`, ...); requests are passed through to the nodes unchanged.

### Routing

- **Sticky sessions**: a session is identified by its system prompt plus first user message, and goes back to the node that already has its KV cache.
- **Moving when busy**: if that node is busy, the router estimates how many tokens an idle node would have to re-read (not counting the system prompt and tools the idle node already cached). It moves the session only if that is under a threshold, otherwise it waits for the original node.
- **Strategies**: even, least load, random, weighted.
- **Node modes**: enable / drain / disable; a request that fails to connect is retried on another node.

### Console

- Node hardware metrics and live progress, including prompt-read progress from `/metrics`
- Request log with the routing decision for each request
- Multiple access keys with usage stats
- Chinese / English UI; the backend uses only the Python standard library

If you think it is worth a mention in the README or docs, that would be great; feel free to close this otherwise.

---

**中文**

感谢 Strata!我在几台机器上跑 Strata,前面加了一个路由入口,开源出来,也许对别人有用:

**https://github.com/konijiwa110/strata-router**(MIT)

### 功能

客户端只连一个入口,请求会分到多台 Strata 节点。接口与 Strata 相同(`/v1/messages`、`/v1/chat/completions`、`/v1/responses`、`/v1/models` 等),请求原样转发给节点。

### 路由

- **会话粘性**:以系统提示加第一条用户消息识别会话,同一会话回到已有其 KV 缓存的节点。
- **忙时换机**:原节点忙时,估算换到空闲节点需要重读多少 token(不计该节点已缓存的系统提示与工具),低于阈值才换,否则等原节点。
- **分配策略**:平均分配、最少负载、随机、按权重。
- **节点状态**:启用 / 排空 / 停用;连接失败的请求自动换到其他节点重试。

### 控制台

- 节点硬件指标与实时进度(含从 `/metrics` 读取的提示读取进度)
- 请求记录,含每个请求的路由决策
- 多个访问密钥及用量统计
- 中文 / 英文界面;后端只用 Python 标准库

如果觉得值得在 README 或文档里提一下就太好了;不合适的话直接关闭即可。

No site

Links install, modelos, releases.