一个 C++11 单头文件库,用于构建 HTTP/HTTPS 服务端和客户端,采用阻塞式 socket I/O。
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
使用 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 数据每日更新。
相关项目
1.7万2777C++MIT更新于 16小时前
一个简洁易用的 Python HTTP 库,用于便捷地发送 HTTP/1.1 请求。
5.5万1.3万PythonApache-2.0更新于 25天前
用 C 编写的高性能 Web 服务器,兼具反向代理、负载均衡、API 网关和内容缓存功能。
3.2万8268CBSD-2-Clause更新于 昨天
基于 Go 语言的高性能 HTTP Web 框架,API 风格类似 Martini,适用于 REST API、Web 应用和微服务。
8.9万8763GoMIT更新于 13天前
面向 Android 和 Java 的类型安全 HTTP 客户端,通过注解接口方法发起网络请求。
4.4万7332JavaApache-2.0更新于 24小时前
开源 API 开发工具,支持 REST、GraphQL、WebSocket 等协议,提供网页、桌面和命令行版本。
8.1万6174TypeScriptMIT更新于 24小时前