cloudwego /hertz

Go HTTP framework with high-performance and strong-extensibility for building micro-services.

★ 7,400⑂ 649
GoCreated 2022-05-12www.cloudwego.io
7,400
stars
+-1+-2+21
649
forks
–
watchers
–
prs
–
issues
–
releases
–
discussions

README

Hertz

English | 中文







!Stars
!Forks

Hertz[həːts] 是一个 Golang 微服务 HTTP 框架,最初fork自fasthttp,并在设计时参考了其他开源框架gin、echo 的优势,并结合字节跳动内部的需求,使其具有高易用性、高
性能、高扩展性等特点,目前在字节跳动内部已广泛使用。如今越来越多的微服务选择使用 Golang,如果对微服务性能有要求,又希望框架能够充分满足内部的可定制化需求,Hertz 会是一个不错的选择。

 框架特点
- 高易用性

  在开发过程中,快速写出来正确的代码往往是更重要的。因此,在 Hertz 在迭代过程中,积极听取用户意见,持续打磨框架,希望为用户提供一个更好的使用体验,帮助用户更快的写出正确的代码。
- 高性能

  Hertz 默认使用自研的高性能网络库 Netpoll,在一些特殊场景相较于 go net,Hertz 在 QPS、时延上均具有一定优势。关于性能数据,可参考下图 Echo 数据。
  
  四个框架的对比:
  !Performance
  三个框架的对比:
  !Performance
  关于详细的性能数据,可参考 hertz-benchmark。
- 高扩展性

  Hertz 采用了分层设计,提供了较多的接口以及默认的扩展实现,用户也可以自行扩展。同时得益于框架的分层设计,框架的扩展性也会大很多。目前仅将稳定的能力开源给社区,更多的规划参考 RoadMap。
- 多协议支持

  Hertz 框架原生提供 HTTP/1.1 及 ALPN 协议支持。除此之外,由于分层设计,Hertz 甚至支持自定义构建协议解析逻辑,以满足协议层扩展的任意需求。
- 网络层切换能力

  Hertz 实现了 Netpoll 和 Golang 原生网络库 间按需切换能力,用户可以针对不同的场景选择合适的网络库,同时也支持以插件的方式为 Hertz 扩展网络库实现。
 详细文档
 快速开始
 Example
  Hertz-Examples 仓库提供了开箱即用的代码,详见。
 用户指南
 基本特性
  包含通用中间件的介绍和使用,上下文选择,数据绑定,数据渲染,直连访问,日志,错误处理,详见文档
 可观测性
  包含日志,链路追踪,埋点,详见文档
 框架扩展
  包含网络库扩展,协议扩展,日志扩展,监控扩展,服务注册与发现扩展,详见文档
 参考
  框架可配置项一览,详见文档
 FAQ
  常见问题排查,详见文档
 框架性能
  性能测试只能提供相对参考,工业场景下,有诸多因素可以影响实际的性能表现
  我们提供了 hertz-benchmark 项目用来长期追踪和比较 Hertz 与其他框架在不同情况下的性能数据以供参考
 相关项目
- Netpoll: 自研高性能网络库,Hertz 默认集成
- Example: Hertz 使用例子

 相关拓展
hertz-Contrib 是 Hertz 扩展生态所在组织,提供服务注册发现、可观测、安全、流量治理、协议、HTTP 通用能力等扩展,由社区共建与维护

| 拓展                                                                                                 | 描述                                                                                                |
|----------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------|
| Autotls                                                | 为 Hertz 支持 Let's Encrypt 。                                                                        |
| Http2                                                    | 提供对 HTTP2 的支持。                                                                                    |
| Websocket                                            | 使 Hertz 支持 Websocket 协议。                                                                          |
| Etag                                                      | 提供 ETag HTTP 响应标头。                                                                                |
| Limiter                                                | 提供了基于 bbr 算法的限流器。                                                                                 |
| Monitor-prometheus                          | 提供基于 Prometheus 服务监控功能。                                                                           |
| Obs-opentelemetry                            | Hertz 的 Opentelemetry 扩展,支持 Metric、Logger、Tracing 并且达到开箱即用。                                       |
| Opensergo                                            | Opensergo 扩展。                                                                                     |
| Pprof           

Snapshot: 2026-11-10T09:35:25Z · Data license Apache-2.0 · JSON