Skip to content

UVHTTP 路线图 ​

愿景 ​

一个轻量级、生产级的 C 语言 HTTP/1.1 服务器库 —— 应用与 libuv 之间没有任何隐藏的抽象层。

职责边界 ​

本库刻意不负责的事。每一条都经过评估后排除;协议类决策的理由记录在 PHILOSOPHY。

关注点不在本库范围内的原因
HTTP/2多路复用与 libuv「每连接透明复用」的事件模型不兼容
HTTP/3(QUIC)需要完全不同的传输层,超出轻量级 C 库的范围
IPv6 监听网关 / 网络栈职责。客户端侧 IPv6 地址提取已支持
YAML/JSON 配置文件嵌入本库的框架或应用自行拥有其配置格式
每用户 / 每 IP 限流网关 / 反向代理职责。全局令牌桶 + 白名单已提供
可观测性(指标、追踪、仪表盘)Prometheus / OpenTelemetry 的领域
认证、DDoS 防护、证书管理网关 / 安全层职责
插件系统、微服务、云原生、serverless基础设施。能力需求由编译期裁剪(27 个 CMake 选项)覆盖
热重载进程 / 监管者职责

当前状态(v2.9.1) ​

已交付 ​

  • HTTP/1.1 —— CI runner 上约 85K RPS(配对门禁实测)
  • WebSocket —— 全双工、RFC 6455、带心跳的 Ping/Pong
  • TLS 1.2/1.3 —— 经 mbedtls,含会话缓存(2048 条目 / 24h)
  • 静态文件 —— sendfile 零拷贝 + 分块回退;路径解析经 fuzz 验证
  • gzip 压缩 + LRU 缓存
  • 限流 —— 全局令牌桶 + 白名单
  • 中间件 —— 编译期实现,零运行时开销
  • 32 位嵌入式支持
  • 27 个编译期选项用于能力裁剪

质量基础设施 ​

  • 102 个单元测试,全绿
  • 每个 PR 跑 ASan 门禁;UBSan、压力测试与覆盖率夜间跑
  • 4 个 libFuzzer harness(router / request / websocket / static-path)
  • 同 runner 配对性能门禁:head vs base,10% 阈值,fail-closed
  • cppcheck 静态分析,零告警
  • CI GITHUB_TOKEN 最小化为 contents: read

待办工作 ​

真实缺口,按价值排序。

性能 ​

  • [ ] 连接池优化
  • [ ] 每请求内存占用降低
  • [ ] 热路径 CPU 效率

开发者体验 ​

  • [ ] 日志框架增强(结构化级别、可插拔输出)
  • [ ] API 参考补全

文档 ​

  • [ ] 架构图
  • [ ] 性能调优指南

平台 —— 无排期,按需 ​

  • [ ] macOS
  • [ ] FreeBSD

技术栈 ​

层选型
核心C99、libuv 1.52、llhttp
TLSmbedtls
内存mimalloc(可选)
哈希xxHash
JSONcJSON(可选)
测试Google Test、libFuzzer

实测性能 ​

取自配对门禁(同 runner,head vs base,10 轮交替测量):

端点RPS说明
/约 85K内存响应
/json约 85KJSON 序列化
/large约 9.6K100KB body

绝对值在共享 runner 上跨 run 漂移约 40%,因此只有配对比值有意义。门禁在配对比值中位数低于 90% 且多数单轮配对也低于 90% 时判失败 —— 绝对 RPS 阈值 gate 的是机器运气而非代码。

基于 MIT 许可证发布