这是我参与「第五届青训营」伴学笔记创作活动的第十五天。
一、本堂课的重点内容
Hertz的基础使用
二、详细知识点如下
1、介绍
Hertz是一个用于 Go的高性能、高可用性、可扩展的HTTP 框架。它旨在为开发人员简化构建微服务。
Hertz采用了4层分层设计(应用层、路由层、协议层、传输层),保证各个层级功能内聚,同时通过层级之间的接口达到灵活扩展的目标。整体框架如下图:
2、路由
hertz提供了get,post,put,delete,any等方式用于注册路由。
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用于参数绑定和校验
3、中间件
4、HTTP Client
Hertz提供了HTTP Client来模拟用户的请求。
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
6、性能
Hertz的卡顿侦测和堆栈抓取能够非常有效地帮助开发者定位性能问题,目前的卡顿侦测策略还有很多优化的空间。
三、课后个人总结
性能优化是每一个成熟的App都必须认真对待的话题,而性能优化的痛点往往在于不能及时发现问题,或者发现了问题却不能定位问题。
目前Hertz的监控指标包括了FPS、CPU使用率、内存占用、卡顿、页面加载时间、网络请求流量等,而耗电量、App冷启动,以及Exception等监控后续会逐步加入到Hertz的监控目标中去。性能监控的指标在未来可能会复用多个现有工具,并且在此基础上逐步完善。
四、引用参考
events.jianshu.io/p/35dd5da1b…
推荐阅读