Go框架三件套-Hertz详解 | 青训营笔记

105 阅读2分钟

“这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天

Hertz是一个用于Go的高性能、高可用性、可扩展的HTTP框架,旨在为开发人员简化构建微服务。

目录结构如下:

  • 基本使用
  • 路由
  • 参数绑定
  • 中间件
  • 性能
  • 生态

基本使用

使用Hertz实现,服务监听8080端口并注册了一个GET方法的路由函数例子如下: image.png

路由: 根据URL分配到对应的处理程序。 对于最简单的静态资源服务器,可以认为所有URL的处理程序就是一个文件读取操作。

路由函数:

  1. 服务器接收请求并解析URL路径
  2. 路由分发:根据请求的路径找到对应的处理函数并执行
  3. 将响应发送给请求者

Hertz路由:

提供了GET、POST、PUT、DELETE、ANY等方法用于注册路由。 1675947372854.png

提供了路由组的能力,用于支持路由分组的功能。 1675947388266.png

提供了参数路由和通配路由 image.png

  • 注册重复时,同一个请求命中三条注册, 路由优先级为:静态路由>命中路由>通配路由

参数绑定

提供了Bind、Validate、BindAndValidate函数进行参数绑定和校验
1675947975231.png

Hertz中间件

Hertz的中间件分为:客户端中间件和服务端中间件。
使用场景:打日志,计算接口耗时,源信息的设置和传递 服务端中间件例子如下: 1675947866938.png

1675947866938.png

Hertz Client

提供了HTTP Client用于帮助用户发送HTTP请求。 1675947647821.png

Hertz代码生成工具

提供了代码生成工具Hz,通过定义IDL(inteface description language)文件即可生成对应的基础服务代码。定义好IDL就可以通过IDL生成服务端和客户端基本代码,基本调用也封装好了。 目录结构 1675947569594.png

Hertz性能

为什么说Hertz性能远高于其他框架?

  1. Netpoll写包会优于标准库很多
  2. Json解编码Sonic
  3. 底层使用sync.Pool复用对象,协议层数据解析优化

Hertz生态

1675947513634.png

参考

juejin.cn/post/715079…