智能限流策略:AI 可以算阈值,但降级预案要人先写好
后端限流从来不是简单的 QPS 数字。大模型应用还要考虑 token 成本、模型并发、队列堆积、租户等级、下游错误率。AI 可以根据历史流量推荐阈值,但限流触发后系统怎么降级,必须提前设计。
限流不是拒绝请求,而是保护核心链路。没有降级预案的智能限流,只是更高级的 429。
一、限流信号要多维
flowchart TD A[QPS] --> E[Rate Limit Decision] B[Token Usage] --> E C[Queue Lag] --> E D[Downstream Error Rate] --> E E --> F[Allow Or Degrade]只看 QPS 不够。一个长 prompt 的成本可能比十个短请求还高。队列堆积也比瞬时 QPS 更能反映压力。
二、阈值要按场景拆
limit_policy: chat_interactive: max_concurrency: 100 max_queue_wait_ms: 500 document_batch: max_concurrency: 10 max_queue_wait_ms: 30000交互请求和批处理任务不能用同一套阈值。用户等待聊天结果,和后台跑文档导入,是两种体验目标。
三、降级动作要提前定义
degrade_actions: - switch_to_smaller_model - reduce_top_k - disable_rerank - queue_batch_jobs - return_cached_answerAI 可以建议什么时候触发,但动作本身要经过架构评审。比如降低 top_k 会影响答案质量,切小模型会影响准确率,这些都要被产品接受。
四、限流结果要可解释
{ "status": "degraded", "reason": "model_gateway_concurrency_high", "fallback": "small_model", "trace_id": "tr_0703" }后端、前端和客服都需要知道发生了什么。否则用户只看到回答变短,团队却不知道系统在降级。
限流策略还要灰度。新阈值不要一次性应用到全部租户,可以先在低风险租户或内部流量上观察。AI 推荐的阈值尤其需要回放历史流量,确认不会误伤正常高峰。
limit_rollout: shadow_evaluate internal_tenant 5_percent 25_percent full_rollout如果误伤率高,就回到上一档。限流策略本身也要可回滚。
五、总结
智能限流可以利用 AI 推荐阈值,但必须基于 QPS、token、队列、错误率等多维信号,并提前设计降级动作。
AI 可以算阈值,不能替团队决定牺牲什么体验。降级预案先写好,限流才是保护,不是混乱。
架构评审时应该问清楚:降级时牺牲的是准确率、实时性、完整性,还是排队时间?这个问题不回答,智能限流就没有业务边界。
降级触发后还要自动恢复。很多系统只设计了怎么降级,没有设计什么时候恢复,最后小模型、低 top_k 或排队模式长期挂着。
recover_policy: error_rate_below_threshold_for: 5m queue_lag_below_threshold_for: 5m gradual_restore: true恢复也要渐进,不要刚恢复就把流量一次性放回去,造成二次抖动。