这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
1.主要内容
- Gorm、Kitex、Hertz三件套的介绍
- Gorm、Kitex、Hertz三件套的基本用法和常见API的讲解
- 项目的介绍和讲解
2.本节详细内容
Gorm
迭代10年以上的强大功能的ORM框架,目前支持MySQL等主流数据库,通过驱动进行连接。
Gorm的增删改查
增:创建 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
删:删除 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
改:更新 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
查:查询 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
高级查:高级查询 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
Gorm的事务
Begin、Commit、Rollback方法
事务的官方文档:事务 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
Hook
Hook 是在创建、查询、更新、删除等操作之前、之后调用的函数。
它会在创建、更新、查询、删除时自动被调用。
如果任何回调返回错误,GORM 将停止后续的操作并回滚事务。
Hook:Hook | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
性能提升
默认性能就很好,可以通过禁用默认事务、缓存预编译语句来进一步的提升其性能。
Tips
- Gorm的约定
- Gorm使用名为ID的字段作为主键
- 使用结构体的蛇形复数作为表名
- 字段名的蛇形作为列明
- 使用CreatedAt、UodatedAt字段作为创建、更新时间
- Gorm有着丰富的生态和扩展,更多用法看官方文档
Kitex
字节内部Go语言微服务RPC框架,高性能高可用强拓展,支持多种协议。
Kitex的安装、定义IDL、生成代码、基本使用详见:快速开始 | CloudWeGo
Tips
- 目前对Win系统支持差,需要使用虚拟机
- 生成代码部分
- build.sh 构建脚本
- kitex_gen IDL内容相关代码。为基础的Server/Client代码
- handler.go 用户在这里实现IDL service定义的方法
- 注册服务发现对接etcd和Nacos等
- 服务默认监听8888端口
- 实例Demo:cloudwego/kitex-examples: Examples for Kitex. (github.com)
Hertz
- 字节内部Http框架,在设计之初参考了其他开源框架 fasthttp、gin、echo 的优势
- 基本使用:快速开始 | CloudWeGo
- Hertz提供了参数路由和通配路由,路由优先级为:静态路由>命名路由>通配路由
- 提供代码生成工具以及Http Client
- 具体中间件以及拓展详见:指南 | CloudWeGo以及hertz-contrib (github.com)
- Hertz性能主要为自研网络库Netpoll以及Json编解码Sonic,使用sync.Poll复用对象协议层数据解析优化
- 性能分析见cloudwego/hertz-benchmark: Tracking performance changes for Hertz (github.com)
3.实践案例
具体项目实例:kitex-examples/bizdemo/easy_note at main · cloudwego/kitex-examples (github.com)
- demoapi:用户的登录、注册、增删改查笔记行为
- demouser:创建、查询、校验用户
- demonote:笔记增删改查
通过调用demoapi操作demouser和demonote,etcd完成服务注册与发现
4.课后总结
- 通过课程对Gorm、Kitex、Hertz三个框架有了初步的认识和了解
- 基础用法详细需要去看官方的文档,看文档也可以了解更多的用法
- 实战案例去详细看整个的代码
- 后续大作业会用到
5.引用
字节直播课:Go 框架三件套详解
Kitex | CloudWeGo
Hertz | CloudWeGo
GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.