第三日后端青训营 | 青训营笔记

55 阅读2分钟

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

今天主要对Go语言框架的三件套进行了粗浅的了解。

三件套主要包括Web、RPC、ORM。

主要对web框架Hertz进行笔记记录

它是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架 fasthttp、gin、echo 的优势, 并结合字节跳动内部的需求,使其具有高易用性、高性能、高扩展性等特点,目前在字节跳动内部已广泛使用。 如今越来越多的微服务选择使用 Golang,如果对微服务性能有要求,又希望框架能够充分满足内部的可定制化需求,Hertz 会是一个不错的选择。

Hertz获取请求参数示例:

func Person(ctx context.Context, c *app.RequestContext) { name := c.Query("name") c.JSON(200, utils.H{ "data": name, }) }、 func PersonInfo(ctx context.Context, c *app.RequestContext) { type Person struct { Age int json:"age" Name stringjson:"name" } body, err := c.Body() if err != nil { panic(err) } var p Person if err := json.Unmarshal(body, &p); err != nil { panic(err) } c.JSON(200, utils.H{ "person": p, }) }

可以了解到,Hertz 坚持内外维护一套代码,为开源使用提供了强有力的保障。通过开源, Hertz 也将丰富云原生的 Golang字节跳动开源 Go HTTP 框架 Hertz 设计实践字节跳动开源 Go HTTP 框架 Hertz 设计实践字节跳动开源 Go HTTP 框架 Hertz 设计实践 中间件体系,完善 CloudWeGo 生态矩阵,为更多开发者和企业搭建云原生化的大规模分布式系统,提供一种现代的、资源高效的的技术方案。

架构设计:

Hertz 设计之初调研了大量业界优秀的 HTTP 框架,同时参考了近年来内部实践中积累的经验。为了保证框架整体上满足:1. 极致性能优化的可能性;2. 面对未来不可控需求的扩展能力, Hertz 采用了 4 层分层设计,保证各个层级功能内聚,同时通过层级之间的接口达到灵活扩展的目标。

课堂总结

主要对go的三个框架的范例进行了解读,有了一个大概的理解。