Go框架三件套|青训营笔记

125 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第一天。这篇文章是Go框架三件套详解的课堂笔记。

Hertz

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

image.png 在三件套的组合中,Hertz主要可以扮演的角色是,接受http请求,并将其路由至对应的处理函数进行处理,最后将对应的响应发出。

Kitex

Kitex是字节跳动内部的Golang微服务RPC框架,具有高性能、强可扩展的特点,针对字节内部做了定制的扩展。如今越来越多的微服务选择使用Golang。如果对微服务性能有要求,又希望定制扩展融入自己的治理体系,Kitex将会是一个不错的选择。Kitex还具有很多优秀的特质,比如高性能,高扩展性,多消息协议,多传输协议,多交互方式,服务治理,以及经常使用到的代码生成能力。用户只要编写好对应的IDL文件,即可使用kitex命令生成对应的代码,非常方便。在三件套的组合中,Kitex主要的作用是将传统的单体架构改造成微服务架构,将任务细分为一个个服务,服务于服务之间互相解耦,各自完成自己的任务,不仅如此,这也有利于利用集群来避免出现服务器出现故障导致影响正常业务的情况。其主要的模式如下图:

image.png

Gorm

gorm是面向golang语言的一种ORM(持久层)框架,支持多种数据库接入,例如MySQL,PostgreSQL,SQLite,SQL Server,Clickhouse。此框架的特点是弱化了开发者对于sql语言的掌握程度,使用提供的API进行底层数据库的访问。这点真的特别的方便,用户不用再思考SQL语句该怎么写,只需要用对应API实现对数据库的CRUD。在三件套的组合中为项目提供方便快捷的数据库操作方法。