“这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天
Hertz是一个用于Go的高性能、高可用性、可扩展的HTTP框架,旨在为开发人员简化构建微服务。
目录结构如下:
- 基本使用
- 路由
- 参数绑定
- 中间件
- 性能
- 生态
基本使用
使用Hertz实现,服务监听8080端口并注册了一个GET方法的路由函数例子如下:
路由: 根据URL分配到对应的处理程序。 对于最简单的静态资源服务器,可以认为所有URL的处理程序就是一个文件读取操作。
路由函数:
- 服务器接收请求并解析URL路径
- 路由分发:根据请求的路径找到对应的处理函数并执行
- 将响应发送给请求者
Hertz路由:
提供了GET、POST、PUT、DELETE、ANY等方法用于注册路由。
提供了路由组的能力,用于支持路由分组的功能。
提供了参数路由和通配路由
- 注册重复时,同一个请求命中三条注册, 路由优先级为:静态路由>命中路由>通配路由
参数绑定
提供了Bind、Validate、BindAndValidate函数进行参数绑定和校验
Hertz中间件
Hertz的中间件分为:客户端中间件和服务端中间件。
使用场景:打日志,计算接口耗时,源信息的设置和传递
服务端中间件例子如下:
Hertz Client
提供了HTTP Client用于帮助用户发送HTTP请求。
Hertz代码生成工具
提供了代码生成工具Hz,通过定义IDL(inteface description language)文件即可生成对应的基础服务代码。定义好IDL就可以通过IDL生成服务端和客户端基本代码,基本调用也封装好了。
目录结构
Hertz性能
为什么说Hertz性能远高于其他框架?
- Netpoll写包会优于标准库很多
- Json解编码Sonic
- 底层使用sync.Pool复用对象,协议层数据解析优化