这是我参与「第五届青训营」伴学笔记创作活动的第 5 天
第五天
Go框架三件套详解(Web/RPC/ORM)
字节内部三件套
-
Gorm
- Gorm是一个已经迭代了10年+的功能强大的ORM框架,在字节内部被广泛使用并且拥有非常丰富的开源扩展
-
Kitex
- Kitex是字节内部的Golang微服务RPC框架,具有高性能、强可扩展的主要特点,支持多协议并且拥有丰富的开源扩展
-
Hertz
- Hertz是字节内部的HTTP框架,参考了其他开源框架的优势,结合字节跳动内部的需求,具有高易用性、高性能、高扩展性特点
Gorm
- Gorm目前支持
MySQLSQLServerPostgreSQLSQLite
连接数据库
- Gorm通过驱动来连接数据库,如果需要连接其它类型的数据库,可以复用/自行开发驱动
Gorm创建数据
Gorm查询数据
更新数据
删除数据
Gorm事务
- Gorm提供了Begin、Commit、Rollback方法用于使用事务
Gorm Hook
Gorm性能提高
Gorm生态
Kitex
- Kitex目前对Windows的支持不完善,如果本地开发环境是Windows,建议使用虚拟机或WSL2
- 安装Kitex代码生成工具
go install github.com/cloudwego/kitex/tool/cmd/kitex@latest
go install github.com/cloudwego/thriftgo@latest
定义IDL
Kitex生成代码
Kitex基本使用
服务默认监听 8888 端口
Kitex Client发起请求
Kitex服务注册与发现
Kitex生态
Hertz
Hertz路由
- Hertz提供了GET\POST\PUT\DELETE\ANY 等方法用于注册路由
- Hertz提供了路由组(Group)的能力,用于支持路由分组的功能
- Hertz提供了参数路由和通配路由,路由的优先级为:静态路由 > 命名路由 > 通配路由
参数绑定
- Hertz提供了 Bind\Validate\BindAndValidate
Hertz中间件
Hertz Client
Hertz代码生成工具
- Hertz提供了代码生成工具
Hz,通过定义IDL(interface description language)文件即可生成对应的基础服务代码
Hertz生态
实战案例
笔记项目是一个使用Hertz Kitex Gorm搭建出来的具备一定业务逻辑的后端API项目
项目功能介绍
项目调用关系
IDL介绍
直接去地址看
项目技术栈