1.Hertz是什么
Hertz是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架 fasthttp、gin、echo 的优势, 并结合字节跳动内部的需求,使其具有高易用性、高性能、高扩展性等特点,目前在字节跳动内部已广泛使用。 如今越来越多的微服务选择使用 Golang,如果对微服务性能有要求,又希望框架能够充分满足内部的可定制化需求,Hertz 会是一个不错的选择。
Hertz 是一个超大规模的企业级微服务 HTTP 框架,具有高易用性、易扩展、低时延等特点。
Hertz 默认使用自研的高性能网络库 Netpoll,在一些特殊场景中,相较于 go net,Hertz 在 QPS、时延上均具有一定优势。
在内部实践中,某些典型服务,如框架占比较高的服务、网关等服务,迁移 Hertz 后相比 Gin 框架,资源使用显著减少,CPU 使用率随流量大小降低 30%—60% 。
2.框架的特点
- 高易用性
- 高性能
- 高扩展性
- 多协议支持
- 网络层切换能力
3.Hertz的使用
目前,hz 可以基于 thrift 和 protobuf 的 IDL 生成 Hertz 项目的脚手架。
-
安装
- 安装 hz:
go install github.com/cloudwego/hertz/cmd/hz@latest- 验证是否安装成功
hz -v, 如果显示如下版本的信息,则说明安装成功
hz version v0.x.x -
根据业务编写相应的idl文件
-
使用代码生成工具自动为idl文件生成代码。
要使用 thrift 或 protobuf 的 IDL 生成代码,需要安装相应的编译器:thriftgo 或 protoc
hz 生成的代码里,一部分是底层的编译器生成的(通常是关于 IDL 里定义的结构体),另一部分是 IDL 中用户定义的路由、method 等信息。用户可直接运行该代码。
运行以下命令自动生成代码。
hz new -module xxx -I idl -idl xxx.proto/xxx.thrift -
使用代码生成工具自动为idl文件生成代码。