分析抖音的互联网架构-Go框架三件套
mindmap
Go框架三件套
Gorm
迭代十年+功能强大的ORM框架
Kitex
字节内部的Golang微服务RPC框架;高性能,可扩展;支持多协议
Hertz
字节内部的HTTP框架;高易用,高性能,高可扩展
一、三件套的使用
1.Gorm的基本使用
当涉及到数据库操作时,Golang中的GORM是一个非常流行的ORM(对象关系映射库),它提供了简洁而强大的API,使得数据库操作变得更加容易和高效。
GORM支持MySQL、SQLServer、PostgreSQL、SQLite。GORM通过驱动来连接数据库,如果需要连接其他类型的数据库,可以复用/自行开发驱动。
2.GORM创建数据
- 如何使用Upsert:使用clause.Onconflict处理数据冲突。
- 如何使用默认值:通过使用default标签为字段定义默认值
First的使用踩坑: 使用First数据时,需要注意查询不到数据会返回ErrRecordNotFound。使用Find查询多条数据时,查询不到数据不会返回错误。
使用结构体作为查询条件: 当使用结构作为条件查询时,GORM只会查询非零值字段
3.更新数据
使用struct更新,只会更新非零值,如果需要更新零值可以使用Map更新或使用select选择字段。
4.删除数据
GORM提供了gorm.DeletedAt用于帮助用户实现软删。拥有软删能力的Model调用Delete时,记录不会被从数据库中真正删除。但GORM会将DeleteAt置为当前时间,并且你不能通过正常的查询方法查到该记录。
5.安装IDL
使用IDL定义服务与接口
如果我们要进行RPC,就需要知道对方的接口是什么,需要传什么参数,同时也需要知道返回值是什么样的。这时候就需要,通过IDL来约定双方的协议,就像在写代码时候需要调用某个函数,我们需要知道函数签名一样
6.Hertz基本使用
使用Hertz实现,服务监听8080端口并注册了一个GET方法的路由函数。
- Hertz路由:提供了GET、POST、PUT、DELETE、ANY等方法用于注册路由。Hertz提供了路由组(group)的能力,用于支持路由分组的功能。
- 路由优先级:静态路由>命名路由>通配路由
- Hertz中间件:主要分为客户端中间件;服务端中间件
- Hertz Client:Hertz提供了HTTP Client用于帮助了用户发送HTTP请求
- Hertz代码生成工具:Hertz提供了代码生成工具Hz,通过定义IDL(inteface description lanuage)文件即可生成对应的代码。
参考文献
文章参考来源于gorm的使用 - 中亿丰数字科技 - 博客园 (cnblogs.com)
Go 框架三件套详解.pptx - 飞书云文档 (feishu.cn)