fix(BIZ-26): 限流范围收窄到 NVIDIA 网关
- 新增网关识别逻辑:只识别 nvidia / nvidiavx18088980513 为限流目标 - volcengine-plan、siliconflow、deepseek 等非 NVIDIA 网关默认不进入令牌桶 - RequestScheduler 增加 gateway/model 参数与 _should_rate_limit 判断 - 未知网关默认不限流,避免误伤其他通道 - 补充网关范围测试与使用文档说明 Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
+34
-10
@@ -11,7 +11,7 @@
|
||||
|
||||
本模块实现了 BIZ-13 运行稳定性保障方案中的 API 限流优化功能:
|
||||
|
||||
1. **令牌桶限流器**:40 RPM 上限,防止触发 API 429 错误
|
||||
1. **NVIDIA 网关专用令牌桶限流器**:40 RPM 上限,防止触发 NVIDIA 网关 API 429 错误
|
||||
2. **四级优先级队列**:紧急 > 高 > 正常 > 低
|
||||
3. **智能降级策略**:高优先级等待,低优先级切备用模型
|
||||
4. **缓存管理器**:按数据类型设置不同 TTL
|
||||
@@ -20,7 +20,31 @@
|
||||
|
||||
---
|
||||
|
||||
## 二、快速开始
|
||||
## 二、适用范围(已按要求收窄)
|
||||
|
||||
**令牌桶限流器只对 NVIDIA 网关 API 生效。**
|
||||
|
||||
识别规则:
|
||||
- `nvidia`、`nvidia-gateway`、`nvidiavx18088980513/...` → 进入 40 RPM 令牌桶
|
||||
- `volcengine-plan/...`、`siliconflow/...`、`deepseek/...` → 不进入令牌桶,不受该限流器影响
|
||||
- 未知网关默认不限制,避免误伤非 NVIDIA 通道
|
||||
|
||||
调用方应显式传入 `gateway` 或 `model`,例如:
|
||||
|
||||
```python
|
||||
# 走 NVIDIA 网关:限流
|
||||
scheduler.submit(payload=data, gateway="nvidia", priority=Priority.NORMAL, callback=handler)
|
||||
scheduler.submit(payload=data, model="nvidiavx18088980513/deepseek-ai/deepseek-v4-pro", callback=handler)
|
||||
|
||||
# 走其他网关:不限流
|
||||
scheduler.submit(payload=data, model="volcengine-plan/ark-code-latest", callback=handler)
|
||||
scheduler.submit(payload=data, model="siliconflow/Qwen/Qwen3", callback=handler)
|
||||
scheduler.submit(payload=data, model="deepseek/deepseek-chat", callback=handler)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 三、快速开始
|
||||
|
||||
### 2.1 基本用法
|
||||
|
||||
@@ -87,7 +111,7 @@ print(f"缓存条目:{stats['total_entries']}")
|
||||
|
||||
---
|
||||
|
||||
## 三、API 参考
|
||||
## 四、API 参考
|
||||
|
||||
### 3.1 TokenBucket(令牌桶)
|
||||
|
||||
@@ -208,7 +232,7 @@ poller.stop()
|
||||
|
||||
---
|
||||
|
||||
## 四、缓存策略
|
||||
## 五、缓存策略
|
||||
|
||||
| 数据类型 | TTL | 说明 |
|
||||
|----------|-----|------|
|
||||
@@ -219,7 +243,7 @@ poller.stop()
|
||||
|
||||
---
|
||||
|
||||
## 五、降级策略
|
||||
## 六、降级策略
|
||||
|
||||
### 5.1 令牌不足时的处理
|
||||
|
||||
@@ -242,7 +266,7 @@ poller.stop()
|
||||
|
||||
---
|
||||
|
||||
## 六、监控与调试
|
||||
## 七、监控与调试
|
||||
|
||||
### 6.1 查看调度器状态
|
||||
|
||||
@@ -267,7 +291,7 @@ print(f"按类别:{stats['by_category']}")
|
||||
|
||||
---
|
||||
|
||||
## 七、测试
|
||||
## 八、测试
|
||||
|
||||
运行测试套件:
|
||||
|
||||
@@ -286,7 +310,7 @@ python3 scripts/test_rate_limiter.py
|
||||
|
||||
---
|
||||
|
||||
## 八、集成示例
|
||||
## 九、集成示例
|
||||
|
||||
### 8.1 与 Multica CLI 集成
|
||||
|
||||
@@ -352,7 +376,7 @@ def heartbeat_check():
|
||||
|
||||
---
|
||||
|
||||
## 九、注意事项
|
||||
## 十、注意事项
|
||||
|
||||
1. **令牌速率配置**:根据实际 API 限制调整 `rate` 参数
|
||||
2. **缓存 TTL**:根据数据变化频率调整,避免过期数据
|
||||
@@ -362,7 +386,7 @@ def heartbeat_check():
|
||||
|
||||
---
|
||||
|
||||
## 十、TODO
|
||||
## 十一、TODO
|
||||
|
||||
- [ ] 接入实际的 Multica CLI 调用
|
||||
- [ ] 添加 Prometheus 监控指标导出
|
||||
|
||||
Reference in New Issue
Block a user