Zing 论坛

正文

InferenceGateway:高性能LLM推理网关的设计与实现

深入解析一个基于C++的高吞吐量LLM服务前端,探讨其异步批处理调度、负载感知路由、Prometheus指标采集等核心机制,以及如何在8000请求/秒下保持亚10毫秒调度延迟。

LLM推理负载均衡C++高性能Prometheus监控请求路由vLLM异步批处理Power of Two Choices
发布时间 2026/04/28 16:43最近活动 2026/04/28 16:48预计阅读 2 分钟
InferenceGateway:高性能LLM推理网关的设计与实现
1

章节 01

InferenceGateway导读:高性能LLM推理网关的核心设计与价值

InferenceGateway是一个基于C++的高性能LLM推理请求路由层,专注于智能分发客户端请求到后端LLM服务副本,不负责模型加载或推理计算。其核心机制包括异步批处理调度、负载感知路由(如Power of Two Choices策略)、Prometheus指标采集等,能在8000请求/秒吞吐量下保持亚10毫秒调度延迟,可直接部署在vLLM、sglang等主流LLM服务前端。

2

章节 02

项目背景与设计目标

InferenceGateway定位为纯粹的请求路由层,不承担推理计算。设计时选择OpenAI兼容的HTTP/JSON接口,因主流LLM服务栈(vLLM、sglang、llama.cpp服务器模式、TGI)均原生支持该格式,无需修改后端代码即可集成。

3

章节 03

架构与核心调度策略

整体架构:客户端请求经HTTP监听器(cpp-httplib)进入MPSC队列,调度器线程从中取请求,按负载均衡策略选后端并转发。采用单线程调度器保证原子性与可预测性,避免锁竞争。

调度策略

  • 轮询:简单但无法应对负载不均;
  • Power of Two Choices(默认):随机选两个后端,选在飞请求少的,O(1)复杂度且负载均衡效果接近最优;
  • 最小负载:扫描所有后端选全局在飞最少的,O(N)复杂度,高并发下可能瓶颈。策略启动时通过命令行指定,运行中不可切换。
4

章节 04

关键机制:批处理与健康检查

异步批处理:对支持批处理的后端(如vLLM的/v1/completions),可在500微秒窗口内收集多个小型请求合并发送,结果拆分回传,提升吞吐量(opt-in功能)。

健康检查:每5秒探测后端/v1/models端点,连续两次失败标记为不健康并排除,恢复后立即重新纳入,解决故障节点阻塞问题。

5

章节 05

可观测性与性能验证

指标采集:内置Prometheus /metrics端点(手工实现,无依赖),采集指标包括请求总数、延迟直方图、在飞请求数、后端健康状态、调度队列深度等。

性能测试:在4个模拟后端上实现8000请求/秒持续吞吐量,调度开销P99延迟<10毫秒,测试体系涵盖单元、集成及性能基准。

6

章节 06

工程实现与局限性

工程细节:采用C++20,CMake构建,依赖极简(cpp-httplib、nlohmann/json均vendored),手工实现MPSC队列避免外部依赖。

局限性:无模型加载功能;流式响应透传但无会话亲和性;缺少mTLS、认证、限流等功能(需前置反向代理)。

未来方向:预留gRPC支持,proto文件已草拟,添加监听器需约300行代码。

7

章节 07

实践意义与启示

InferenceGateway展示了资源受限场景下高性能LLM基础设施的构建思路:明确范围(只做路由)、务实技术选择(HTTP/JSON而非gRPC)、可测量性能目标、完整可观测性。对LLM服务平台团队而言,可作为轻量级生产就绪参考实现,无论是学习调度算法还是直接部署均具价值。