feat(proxy): 架构与算法优化二轮——sense 运行时单例激活 T-X3、打码密钥泄漏修复、账本热路径 2.4x
- gateway/proxy/routes.py:sense 运行时(SenseStore+Grader+晋升表)按配置单例化, 原每请求重建导致:每请求跑全量 DDL、重读工件文件,且 T-X3 60s 决策缓存随 Grader 丢弃、命中率恒为 0(本轮最大收益,激活既有已测组件); T1 审计抽样修复原 NameError×3 被 except 吞掉(load_config/get_review/request_id 均未定义、§9.4 从未入队)——request_id 上提、review 队列经 review_getter 注入 (api.py 反向依赖解除)、sample_rate 走 load_config - gateway/model_pool.py:新增 usable_entries() 未打码内通道;routes 的降级链/ 预算降档/能力位重定向/档位映射四处改走该通道——修复打码 api_key 流入上游 Bearer 头导致带密钥条目重定向必 401 的隐性缺陷(HTTP 管理面仍用打码 list()) - gateway/proxy/ledger.py + billing.py:共享持久连接(原每操作新建,全链路 每请求 3-5 次 connect)+ 日重置 UPDATE 每实例每日一次短路(原每请求全表扫描 抢写锁);check_and_count A/B 0.75→0.31 ms/op(2.4x);新增 usage_stats() SQL 聚合,/admin/stats 从 list_usage(limit=50 万) Python 四遍扫描改为下推聚合 (微基准 ~28x,随流水线性扩大) - gateway/sense/grader.py:决策留痕 insert_decision 移入 asyncio.to_thread (原同步 sqlite 写直接跑在事件循环线程,高并发阻塞网关;与观察写批量队列同等保护) - 全量 474 项两轮复核全绿(基线 474)
This commit is contained in:
+11
-1
@@ -116,13 +116,23 @@ class PoolStore:
|
||||
|
||||
# ---------- 条目 CRUD ----------
|
||||
def list(self) -> Dict[str, Any]:
|
||||
"""返回完整池(api_key 打码)。"""
|
||||
"""返回完整池(api_key 打码,供 HTTP 管理面)。"""
|
||||
with self._lock:
|
||||
return {
|
||||
"roles": dict(self._data["roles"]),
|
||||
"entries": [self._masked(e) for e in self._data["entries"]],
|
||||
}
|
||||
|
||||
def usable_entries(self) -> List[Dict[str, Any]]:
|
||||
"""未打码条目快照——仅供代理转发链内部使用(failover/降档/能力重定向),
|
||||
绝不进入任何 HTTP 响应。
|
||||
|
||||
背景:此前降级链/能力重定向从 list() 取打码条目,带 api_key 的条目
|
||||
被重定向时向上游发送打码密钥(必 401),T-X1/T-X2/T-X6 链路静默劣化。
|
||||
"""
|
||||
with self._lock:
|
||||
return [dict(e) for e in self._data["entries"]]
|
||||
|
||||
def get(self, entry_id: str) -> Optional[Dict[str, Any]]:
|
||||
with self._lock:
|
||||
for e in self._data["entries"]:
|
||||
|
||||
Reference in New Issue
Block a user