在微服务架构下落地企业级 AI 能力,已经不再只是单纯的"用 LangChain 包一个 API",而是演变成了如何将 不确定性的 AI 流量 融入 高可用、确定性的微服务治理体系。
结合 2026 年最新的云原生与 AI 网关架构趋势,微服务下的 AI 能力封装、网关、限流与监控可以沉淀为以下落地指南:
一、 AI 能力的微服务封装模式
AI 算力成本高、推理时间长,不能直接当作普通的无状态 REST API 来对待。推荐采用职责分离(Decoupling)的封装模式:
1. 拆分为独立微服务
- 网关/编排层(Agent / RAG Orchestrator): 轻量级、I/O 密集型。负责 Prompt 拼接、上下文检索、多工具调用(MCP 协议)。使用 Node.js (NestJS) 或 Python (FastAPI) 编写。
- 模型中间件服务(LLM Proxy Service): 屏蔽底层不同供应商(OpenAI, AWS Bedrock, 内部私有化大模型)的 API 差异,提供标准化的协议(统一为标准 OpenAI 格式)。
2. 流式响应(Streaming)与长连接设计
- 禁止在大模型生成长文本时让 HTTP 连接死等。封装层必须全面支持 SSE(Server-Sent Events) 协议进行打字机式输出。
- 对于复杂的多 Agent 协作(运行时长超过 30 秒的场景),采用异步任务模式 :网关返回
task_id,Agent 异步执行,执行状态通过 MQ(如 Kafka)通知,前端通过 WebSocket 订阅或轮询。
二、 AI 网关(AI Gateway)架构选型
传统的微服务网关(如 Spring Cloud Gateway、Zuul)缺乏对"语义、Token、Prompt"的感知能力。当前企业级演进的主流是 "传统 API 网关的 AI 插件化" 或 专有 AI 网关。
1. 核心技术选型
- 云原生/K8s 生态: Envoy AI Gateway(基于 Envoy 扩展,天然支持 K8s Gateway API,性能极高)。
- 企业级网关延伸: Kong AI Gateway(提供强大的插件生态,如开箱即用的语义缓存、Token 限流)。
- 垂直领域: Portkey / Helicone(专注 LLMOps 的可观测性与路由调优网关)。
2. 网关层的特有职责
[客户端 Client]
│
▼ (标准 OpenAI 格式 / REST)
┌─────────────── AI 网关层 (Envoy / Kong) ────────────────┐
│ 1. 安全护栏: 注入防护, 违禁词拦截, PII 数据脱敏 │
│ 2. 语义缓存: 命中向量缓存直接返回 -> 提速 70% │
│ 3. 智能路由: 故障自动降级 (如 Azure 降级到 DeepSeek) │
└────────────────────────────────────────────────────────┘
│
▼ (带内部认证的流式数据)
[微服务/模型层: 私有化 LLM / 商业 API]
三、 Token-Aware 精细化限流(Rate Limiting)
传统的"每秒请求数(RPS)"限流在 AI 场景下完全失效(因为一个请求可能消耗 100 个 Token,另一个可能因为长文本或长上下文消耗 100,000 个 Token,导致后端的算力/资金成本完全失控)。
1. 限流维度设计
必须引入 Token 感知型限流(Token-Aware Rate Limiting) ,网关在解析流式返回的 usage 字段后,动态扣减配额。
- RPM (Requests Per Minute): 限制请求频次,防止刷接口(常规手段)。
- TPM (Tokens Per Minute): 限制每分钟消耗的 Input + Output 总 Token 数(成本控制核心)。
- 层级配额 (Hierarchical Quotas): 按"企业租户"、"部门"、"个人"三个维度做叠加限流。例如:
-
- 财务部(高优先级):500,000 TPM
- 市场部(低优先级):100,000 TPM
2. 核心代码参考:Envoy / Kong 语义下的限流表达
在配置网关时,通过条件表达式(如 CEL)将 Token 转换为计费权重(通常 Output 比 Input 贵 3 倍):
YAML
XML
# 伪配置示例:基于 AI 网关的自定义 Token 成本限流
rate_limit_rule:
client_selectors:
- tenant_id: "marketing_team"
model: "gpt-4o"
limit:
unit: Minute
requests: 0 # 设为0,代表禁用传统的请求次数限制
cost_calculation:
# 使用 CEL 表达式动态计算本次请求扣减的配额(Output Token 乘重)
expression: "response.input_tokens * 1.0 + response.output_tokens * 3.0"
max_budget_per_minute: 50000
四、 全链路监控与可观测性(Observability)
AI 微服务的监控不仅仅是 CPU 和内存,最核心的是 "语义级指标" 与 "Token 资金链"。
1. Prometheus / Grafana 指标埋点体系
AI 网关及能力封装层必须对外暴露以下维度的 Metrics:
|-----------|---------------------------------|--------------------------------------------------------------|
| 指标分类 | 核心 Metrics 名称 | 监控目的 |
| 性能指标 | llm_ttft_seconds_bucket | 首字延迟 (Time to First Token):流式响应的关键体验。 |
| | llm_token_generation_velocity | 每秒生成 Token 数:评估模型输出是否卡顿。 |
| 成本与容量 | llm_tokens_consumed_total | Token 消耗总量 (标签拆分:input /output /model /tenant )。 |
| | llm_semantic_cache_hit_ratio | 语义缓存命中率:评估省了多少钱。 |
| 稳定性指标 | llm_provider_fallback_total | 模型降级触发次数:评估上游供应商稳定性。 |
2. 链路追踪(Distributed Tracing)与分布式可观测性
在微服务环境下,一个用户提问可能会触发:网关 -> Agent服务 -> 向量数据库检索 -> 模型调用 -> 外部工具回调(MCP)。
- OpenTelemetry 标准: 必须使用 OpenTelemetry 将大模型的 Prompt、Completion、Tools 封装为标准的 Span。
- Trace 染色: 沿微服务链路向下传递
x-request-id和x-user-id,确保在 Jaeger 或 SkyWalking 中能够一眼看清一个长文本回答在哪个中间件(如向量检索、大模型推理)上耗时最久。
五、 最佳实践总结与避坑指北
- 绝对不要让网关做重度编排: 网关只做鉴权、路由、基础脱敏和限流。多 Agent 调度、Prompt 注入等复杂的长耗时业务,请在独立的微服务(Orchestrator)中处理。
- 务必开启语义缓存(Semantic Caching): 相同的内部 FAQ 提问(例如:"怎么连接公司 VPN" vs "如何挂载公司内部网络"),利用网关层的向量数据库进行语义匹配缓存。如果相似度大过 0.95,直接返回缓存结果。这能帮企业节省 40% 以上的 Token 费用,并把响应时间从几秒缩短到 100 毫秒以内。