Hertz| 青训营笔记

87 阅读2分钟

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

一、本堂课的重点内容

Hertz的基础使用

二、详细知识点如下

1、介绍

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

Hertz采用了4层分层设计(应用层、路由层、协议层、传输层),保证各个层级功能内聚,同时通过层级之间的接口达到灵活扩展的目标。整体框架如下图:

image.png

2、路由

hertz提供了get,post,put,delete,any等方式用于注册路由。

image.png

Hertz和gin一样,提供了分组路由的功能

v1 := h.Group("/v1")
{
   v1.GET("/login", func(c context.Context, ctx *app.RequestContext) {
   })

}
v2 := h.Group("/v2")
{
   v2.GET("/login", func(c context.Context, ctx *app.RequestContext) {

   })
}

Hertz路由的匹配优先级:静态路由>命名路由>通配路由

 h.GET("/herz/:version", func(c context.Context, ctx *app.RequestContext) {

})
h.GET("/herz/*action", func(c context.Context, ctx *app.RequestContext) {

})

参数绑定:Bind、Validate、BindAndValidate用于参数绑定和校验

image.png

3、中间件

image.png

4、HTTP Client

Hertz提供了HTTP Client来模拟用户的请求。

image.png

5、Hertz代码生成工具

编写IDL

namespace go hello.example

struct HelloReq{
    1:string Name (api.query="name");
}

struct HelloResp{
    1:string RespBody;
}

service HelloService{
    HelloResp HelloMethod(1:HelloReq request)(api.get="/hello")
}

利用hz工具生成代码

hz new -module mod_name -idl idl/hello.thrift

image.png

image.png

6、性能

image.png Hertz的卡顿侦测和堆栈抓取能够非常有效地帮助开发者定位性能问题,目前的卡顿侦测策略还有很多优化的空间。

三、课后个人总结

性能优化是每一个成熟的App都必须认真对待的话题,而性能优化的痛点往往在于不能及时发现问题,或者发现了问题却不能定位问题。

目前Hertz的监控指标包括了FPS、CPU使用率、内存占用、卡顿、页面加载时间、网络请求流量等,而耗电量、App冷启动,以及Exception等监控后续会逐步加入到Hertz的监控目标中去。性能监控的指标在未来可能会复用多个现有工具,并且在此基础上逐步完善

四、引用参考

events.jianshu.io/p/35dd5da1b…

blog.csdn.net/qq_43716830…

推荐阅读

www.zhu-an.cn/todo/Re%EF%…