Repolode
valyala

valyala/fasthttp

面向 Go 的高性能 HTTP 服务端与客户端实现,注重低内存分配与高吞吐。

Star
23,489
Fork
1,883
未关闭 Issue
66
最近提交
前天

这是什么?

fasthttp 是一个 Go 语言的 HTTP 实现,同时提供服务端和客户端 API。它面向请求量极大的场景,通过复用请求和响应对象、在热点路径上避免内存分配来提升性能。项目给出的基准测试显示,在所测环境下服务端最多约快 6 倍,客户端最多约快 4 倍。

它的 API 与 net/http 刻意不同:处理函数只接收一个 *RequestCtx 参数,且不提供 ServeMux,路由需要借助 fasthttp-routing、Fiber 等第三方路由或框架。响应头和响应体可以按任意顺序写入,直到处理函数返回才真正发出。从 net/http 迁移时需要改写处理函数,并避免在函数返回后保留上下文的引用。

项目文档同时指出,对大多数应用而言 net/http 更易用、覆盖更多 HTTP 边界情况,并支持 HTTP/2。fasthttp 更适合每秒需处理数千个中小请求、并且对延迟稳定性要求较高的服务。

核心功能

  • 01提供服务端与客户端 API,复用请求和响应对象以减少内存分配。
  • 02处理函数只接收一个 RequestCtx,响应头和响应体可以按任意顺序写入。
  • 03支持 reuseport 监听器,便于在多核环境中按 CPU 核心部署。
  • 04提供 net/http 处理函数转换、文件服务和超时处理等辅助工具。
  • 05需要 Go 1.26 或更高版本。

适用场景

  • 处理大量小请求的高吞吐 API 网关或代理服务。
  • 对延迟敏感、且内存分配已成为瓶颈的 Go 服务。
  • 单机需维持大量 keep-alive 连接的边缘服务。

快速上手

  1. 1

    使用 Go 安装该库

    go get -u github.com/valyala/fasthttp

使用前须知

  • fasthttp 不是 net/http 的直接替代品,其 API 与之不同。
  • README 指出,除非需要极高吞吐量,通常 net/http 更好。

标签

常见问题

fasthttp 是什么?
面向 Go 的高性能 HTTP 服务端与客户端实现,注重低内存分配与高吞吐。 fasthttp 是一个 Go 语言的 HTTP 实现,同时提供服务端和客户端 API。它面向请求量极大的场景,通过复用请求和响应对象、在热点路径上避免内存分配来提升性能。项目给出的基准测试显示,在所测环境下服务端最多约快 6 倍,客户端最多约快 4 倍。
fasthttp 可以免费使用吗?用的什么许可证?
fasthttp 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
fasthttp 还在维护吗?
活跃维护中。fasthttp 最近一次提交是在 2026年10月21日。
fasthttp 适合用来做什么?
处理大量小请求的高吞吐 API 网关或代理服务。 对延迟敏感、且内存分配已成为瓶颈的 Go 服务。 单机需维持大量 keep-alive 连接的边缘服务。
fasthttp 怎么安装和运行?
使用 Go 安装该库: go get -u github.com/valyala/fasthttp
在哪里获取 fasthttp?
源代码和安装说明在 GitHub 上:https://github.com/valyala/fasthttp

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目