这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天
三件套基础使用
三件套
Gorm 强大的ORM框架
Kitex Golang 微服务RPC框架
Hertz 字节内部的HTTP框架
Grom
Gorm文档 gorm.cn/
Gorm创建数据
Gorm查询数据
Gorm更新数据
实际工程中引用软删,Gorm提供了gorm.DeletedAt用于帮助用户实现软删:拥有软删除能力的Model调用Delete时,记录不会被从数据库中真正删除。但Gormandize会将DeleteAt置为当前时间,并且你不能在通过正常的查询方式找到该记录。
使用Underscoped可以查询到被软删的数据。
Gorm事物
Gorm提供里Begin,Commit,Rollback方法用于使用事务。
Gorm提供里Transaction方法用于自动提交事务,避免用户漏写Commit,Rollback
Gorm Hook 在提供了CURD的Hook能力。Hook是在创建、查询、更新、删除等操作之前,之后自动调用的函数。
如果任何Hook返回错误,Gorm将停止后续的操作并回滚事务。
Gorm性能提高
对于写操作(创建、更新、删除),为了确保数据的完整性,Gorm会将它们封装在事务内运行。但这会降低性能,你可以使用SkipDefaultTransaction关闭默认事务。
使用PrepareStmt缓存预编译语句可以提高后续调用的速度。
Gorm生态
Gorm拥有非常丰富的扩展生态。
Kitex
使用IDL定义服务和接口
如果需要进行RPC,就需要知道对方的接口是什么,需要传什么参数,同时也需要直到返回值是什么样的。就需要通过IDL来约定双方的协议。
基本使用
服务默认监听8888端口。
创建Client
发起请求
目前Kitex的服务注册与发现已经对接了主流了服务注册和发现中心,如ETCD,Nacos。
Kitex服务注册与发现
Kitex生态
Hertz
基本使用
Hertz提供了GET,POST,PUT,DELETE ANY等方法注册路由。
Hertz提供了路由组(Group)的能力,用于支持路由分组。
Hertz提供了参数路由和通配路由,路由的优先级为:静态路由-》命名路由-》通配路由
Hertz提供了Bind,Validate,BindAndValidate函数用于进行参数绑定。
Hertz的中间件主要分为客户端中间件与服务端中间件。
Hertz提供了HTTP Client用于帮助用户发送HTTP请求。
Hertz代码生成工具
Hertz提供里代码生成工具HZ,通过定义IDL(inteface description language)文件即可生成树对应的基础服务代码。
Hertz性能
网络库Netpoll,Json编解码Sonic,使用sync.Pool复用对象协议层数据解析优化。
Hertz生态
Hertz拥有丰富的拓展生态。
实战案例介绍
通过使用Hertz,Kitex,Gorm搭建出具有有定业务逻辑的后端API项目。
总结
这次课程学习了Go开发框架三件套,由字节跳动内部开发经验总结得来,通过三件套可以更轻松应对开发中的代码需求。这些框架在项目中都是需要应用的,Gorm, Kitex, Hertz分别是ORM, RPC, HTTP框架,能够更好完善项目需求。