这是我「第五届青训营」笔记创作活动的第九天。
Golang框架三件套
- Gorm
- Kitex
- Herz
ORM框架Gorm
Gorm 类似于 mybatis-plus 框架,通过驱动连接数据库并且可以对数据库的数据进行 CRUD 操作。Gorm是一个成熟的功能强大的ORM框架,在字节内部广泛使用且拥有很多丰富的开源扩展 使用 struct 作为条件查询时,Gorm 只能查询非零值,如果字段值为 0,"",false 或其他零值,该字段不会被用于构建查询条件,如果想要查询零值,可以使用 map 来构建查询条件。
- 当struct更新时,只会更新非零值,可以使用Map或者select操作来选择字段。
- gorm.DeleteAt可以自动执行软删除操作,可以通过Unscoped进行查询被软删的数据
- 事务操作可以通过Transaction操作自动提交事务,避免漏写commit、rollback
- Gorm支持Hook操作,可以在执行CRUD后自动调用函数
RPC框架Kitex
接口描述语言,是用来描述软件组件接口的一种语言。IDL通过一种独立于编程语言的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信交流。
- 使用 kitex -module example -service example echo.thrift 命令生成代码
- 目前Kitex的服务注册与发现已经对接了主流的服务注册与发现中心,如ETCD,Nacos等。
web框架Hertz
Hertz属于字节跳动公司内部开发的框架,这个框架才刚刚诞生不久,内容并不是很完善,学员们可以通过自己的努力成为该框架的contributor之一
Hertz路由
- Hertz提供了GET、POST、PUT、DELETE、ANY等方法用于注册路由
- Hertz提供了路由器的能力,用于支持路由分组的功能
- Hertz提供了参数路径和通配路由,路由的优先级为:静态路由 > 命名路由 > 通配路由