这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
三件套介绍
Gorm
Gorm是一个已经迭代了10年+的功能强大的ORM框架,在字节内部被广泛使用并且拥有非常丰富的开源拓展。
Kitex
Kitex是字节内部的Golang微服务RPC框架,具有高性能、强可拓展的主要特点。支持多协议并且拥有丰富的开源拓展
Hertz
Hertz是字节内部的HTTP框架,参考了其他开源框架的优势,结合字节跳动内部的需求,具有高易用性,高性能,高拓展性特点
GORM生态
GORM代码生成工具 GORM分片库方案 GORM手动索引 GORM乐观锁 GORM读写分离 GORM OpenTelemetry拓展
使用IDL定义服务与接口
如果我们要进行RPC就需要知道对方的接口是什么,需要传入什么参数,同时也需要知道返回值是什么样的。这时候就需要通过IDL来约定双方的协议,就像在写代码的时候需要调用某个函数,我们需要知道函数签名一样。
Kitex生态
XDS拓展
opentelemetry
ETCD服务注册与发现拓展
Nacos服务注册与发现拓展
Zookeeper服务注册与发现拓展
polaris拓展
丰富的示例代码与业务demo
Gorm的约定
gorm使用名为ID的字段作为主键
使用结构体的蛇形负数作为表名
字段名的蛇形作为列名
使用createdAt,UpdatedAt字段作为创建、更新时间
First的使用踩坑
使用First时,需要注意查询不到数据会返回ErrRecordNotFound。使用Find查询多条数据,查询不到数据不会返回错误。
使用结构体作为查询条件
当使用结构体作为条件查询时,GORM只会查询非零值字段。这意味着如果您的字段值为0,false或其他零值,该字段不会被用于构建查询条件,使用Map来构建查询条件