feat: 性能监控基础设施、解密缓存及计费简化

- 新增 PerfRecorder 性能记录工具,支持采样率与慢请求日志
- 在请求管道中埋点:auth、body_read、json_parse、context_build、authorize、handle
- 流处理器增加 parse/conversion 耗时追踪与 perf_metrics 落库
- 解密服务添加 LRU 缓存,降低高频解密 CPU 开销
- 格式转换分层开关设计:全局 OFF 时回退到端点配置,而非一刀切拒绝
- 移除 shadow billing 模块,统一使用新计费引擎
- 新增 Codex 网关请求适配器(store=false、role 映射、include 补齐)
- endpoint 创建接口支持 body_rules 参数
This commit is contained in:
fawney19
2026-02-05 14:22:11 +08:00
parent e72e5370c4
commit ed2ff5c1d7
25 changed files with 836 additions and 963 deletions

View File

@@ -219,6 +219,30 @@ class Config:
# 默认 60 秒,防止客户端发送不完整请求导致连接卡死
self.request_body_timeout = float(os.getenv("REQUEST_BODY_TIMEOUT", "60.0"))
# 性能检测配置
# PERF_METRICS_ENABLED: 是否启用性能指标上报(监控插件)
# PERF_LOG_SLOW_MS: 慢请求日志阈值毫秒0 表示关闭
# PERF_SAMPLE_RATE: 采样率 (0-1),降低高频指标开销
self.perf_metrics_enabled = os.getenv("PERF_METRICS_ENABLED", "false").lower() == "true"
self.perf_log_slow_ms = int(os.getenv("PERF_LOG_SLOW_MS", "0"))
self.perf_sample_rate = float(os.getenv("PERF_SAMPLE_RATE", "1.0"))
# PERF_STORE_ENABLED: 是否将性能指标写入 Usage.request_metadata
# PERF_STORE_SAMPLE_RATE: 存储采样率 (0-1),用于降低写入压力
self.perf_store_enabled = os.getenv("PERF_STORE_ENABLED", "false").lower() == "true"
self.perf_store_sample_rate = float(os.getenv("PERF_STORE_SAMPLE_RATE", "1.0"))
# 解密缓存配置降低高频解密带来的CPU开销
# CRYPTO_DECRYPT_CACHE_ENABLED: 是否启用解密结果缓存
# CRYPTO_DECRYPT_CACHE_SIZE: 最大缓存条目数
# CRYPTO_DECRYPT_CACHE_TTL_SECONDS: 缓存TTL
self.crypto_decrypt_cache_enabled = (
os.getenv("CRYPTO_DECRYPT_CACHE_ENABLED", "true").lower() == "true"
)
self.crypto_decrypt_cache_size = int(os.getenv("CRYPTO_DECRYPT_CACHE_SIZE", "256"))
self.crypto_decrypt_cache_ttl_seconds = float(
os.getenv("CRYPTO_DECRYPT_CACHE_TTL_SECONDS", "60.0")
)
# 内部请求 User-Agent 配置(用于查询上游模型列表等)
# 可通过环境变量覆盖默认值,模拟对应 CLI 客户端
self.internal_user_agent_claude_cli = os.getenv(
@@ -241,26 +265,6 @@ class Config:
self.billing_require_rule = os.getenv("BILLING_REQUIRE_RULE", "false").lower() == "true"
self.billing_strict_mode = os.getenv("BILLING_STRICT_MODE", "false").lower() == "true"
# 计费迁移运行时开关(用于灰度/影子计费/快速止血)
# BILLING_ENGINE:
# - legacy: 仅旧系统(当前默认)
# - shadow: 旧系统为真值 + 新系统影子计算(对账期)
# - new_with_fallback: 新系统为真值,差异过大时回退旧系统
# - new: 仅新系统
# Default to "new" per unified billing architecture.
self.billing_engine = os.getenv("BILLING_ENGINE", "new").strip().lower()
# 按 provider/model 粒度覆盖JSON 字符串)
# 示例: {"anthropic/*": "shadow", "openai/gpt-4*": "new"}
self.billing_engine_overrides = os.getenv("BILLING_ENGINE_OVERRIDES", "{}")
# 影子计费差异阈值(美元)
self.billing_diff_threshold_usd = float(os.getenv("BILLING_DIFF_THRESHOLD_USD", "0.0001"))
# 差异日志级别DEBUG/INFO/WARNING/ERROR
self.billing_shadow_log_level = os.getenv("BILLING_SHADOW_LOG_LEVEL", "INFO").strip()
# 是否启用差异告警(预留扩展)
self.billing_diff_alert_enabled = (
os.getenv("BILLING_DIFF_ALERT_ENABLED", "false").lower() == "true"
)
# Usage.request_metadata 体积控制(用于降低 DB/CPU/内存压力)
# USAGE_METADATA_MAX_BYTES:
# - 0: unlimited (backward compatible)