Skip to content

Latest commit

 

History

History
127 lines (110 loc) · 13.9 KB

README_cn.md

File metadata and controls

127 lines (110 loc) · 13.9 KB

Hertz

English | 中文

Release WebSite License Go Report Card OpenIssue ClosedIssue Stars Forks

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

框架特点

  • 高易用性

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

  • 高性能

    Hertz 默认使用自研的高性能网络库 Netpoll,在一些特殊场景相较于 go net,Hertz 在 QPS、时延上均具有一定优势。关于性能数据,可参考下图 Echo 数据。

    四个框架的对比: Performance 三个框架的对比: Performance 关于详细的性能数据,可参考 hertz-benchmark

  • 高扩展性

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

  • 多协议支持

    Hertz 框架原生提供 HTTP1.1、ALPN 协议支持。除此之外,由于分层设计,Hertz 甚至支持自定义构建协议解析逻辑,以满足协议层扩展的任意需求。

  • 网络层切换能力

    Hertz 实现了 Netpoll 和 Golang 原生网络库 间按需切换能力,用户可以针对不同的场景选择合适的网络库,同时也支持以插件的方式为 Hertz 扩展网络库实现。

详细文档

Example

Hertz-Examples 仓库提供了开箱即用的代码,详见

用户指南

基本特性

包含通用中间件的介绍和使用,上下文选择,数据绑定,数据渲染,直连访问,日志,错误处理,详见文档

治理特性

包含 trace monitor,详见文档

框架扩展

包含网络库扩展,详见文档

参考

apidoc、框架可配置项一览,详见文档

FAQ

常见问题排查,详见文档

框架性能

性能测试只能提供相对参考,工业场景下,有诸多因素可以影响实际的性能表现 我们提供了 hertz-benchmark 项目用来长期追踪和比较 Hertz 与其他框架在不同情况下的性能数据以供参考

相关项目

  • Netpoll: 自研高性能网络库,Hertz 默认集成
  • Hertz-Contrib: Hertz 扩展仓库,提供中间件、tracer 等能力
  • Example: Hertz 使用例子

相关拓展

拓展 描述
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 Hertz 集成 Pprof 的扩展。
Registry 提供服务注册与发现功能。到现在为止,支持的服务发现拓展有 nacos, consul, etcd, eureka, polaris, servicecomb, zookeeper, redis。
Sentry Sentry 拓展提供了一些统一的接口来帮助用户进行实时的错误监控。
Tracer 基于 Opentracing 的链路追踪。
Basicauth Basicauth 中间件能够提供 HTTP 基本身份验证。
Jwt Jwt 拓展。
Keyauth 提供基于 token 的身份验证。
Requestid 在 response 中添加 request id。
Sessions 具有多状态存储支持的 Session 中间件。
Casbin 通过 Casbin 支持各种访问控制模型。
Cors 提供跨域资源共享支持。
Csrf Csrf 中间件用于防止跨站点请求伪造攻击。
Secure 具有多配置项的 Secure 中间件。
Gzip 含多个可选项的 Gzip 拓展。
I18n 可帮助将 Hertz 程序翻译成多种语言。
Lark 在 Hertz 中处理 Lark/飞书的卡片消息和事件的回调。
Loadbalance 提供适用于 Hertz 的负载均衡算法。
Logger Hertz 的日志拓展,提供了对 zap、logrus、zerologs 日志框架的支持。
Recovery Hertz 的异常恢复中间件。
Reverseproxy 实现反向代理。
Swagger 使用 Swagger 2.0 自动生成 RESTful API 文档。
Cache 用于缓存 HTTP 接口内容的 Hertz 中间件,支持多种客户端。

相关文章

贡献代码

Contributing

RoadMap

Hertz RoadMap

开源许可

Hertz 基于Apache License 2.0 许可证,其依赖的三方组件的开源许可见 Licenses

联系我们

贡献者

感谢您对 Hertz 作出的贡献!

Contributors

Landscapes

  

CloudWeGo 丰富了 CNCF 云原生生态