go-zero学习 第八章 总结及知识点快速导航
对各章节重点内容进行汇总,便于查找。
1 各章节链接地址
- go-zero学习 第一章 基础
- go-zero学习 第二章 进阶之API
- go-zero学习 第三章 微服务
- go-zero学习 第四章 数据库操作(MySQL)
- asynq | go-zero学习 第五章 集成asynq
- go-zero学习 第六章 分布式事务dtm
- go-zero学习 第七章 运维部署
其他:
8. go-zero学习 Mikaelemmmm的视频讲解整理
9. go-zero社区群有效信息整理【暂未开放】
10. Go Redis:https://redis.uptrace.dev/zh
11. Golang ClickHouse:https://clickhouse.uptrace.dev
2 官方文档知识点
- go-zero官方文档(新版)
3 第一章 基础
3.1 知识点
- go-zero 需要安装的组件
- go-zero的API服务简单入门
- go-zero的微服务简单入门
- grpc服务独立调试:6.1.5 访问gRPC 服务
- 目录结构介绍
3.2 相关命令
go-zero
的goctl
工具下载
go install github.com/zeromicro/go-zero/tools/goctl@latest
- 验证
goctl
的安装结果:
goctl -v
goctl
一键安装protoc
、protoc-gen-go
、protoc-gen-go-grpc
goctl env check --install --verbose --force
go-zero
快速生成API
服务
goctl api new greet
api
文件格式化
goctl api format --dir xxx.api
go-zero
快速生成RPC
服务
goctl rpc new demo
4 第二章 进阶之API
4.1 知识点
- 根据
api
文件生成API
服务命令 api
语法POST
请求、GET
请求path
参数、form
参数、json
参数- 参数修饰符
- 文件上传/下载/预览
- 请求体大小限制
api
分组- 局部、全局中间件
- 统一返回信息
- 修改
go-zero
生成代码的模板
4.2 相关命令
api
生成api
服务命令
go-zero-api\api> goctl api go -api ./doc/ucenter.api -dir ./code
5 第三章 微服务
5.1 知识点
API
服务调用RPC
服务JWT
鉴权- 服务注册/发现(
etcd/IP
直连) API
服务与RPC
服务之间文件传输RPC
分组- 超时时间
grpc
服务端接收请求体大小限制grpc
客户端接收响应体大小限制API
和RPC
服务拦截器- 服务间通过
metadata
代替context
传值 RPC
服务如何独立调试
5.2 相关命令
goctl
使用api
文件生成api服务
命令:
\go-zero-micro\api> goctl api go -api ./doc/all.api -dir ./code/ucenterapi
goctl
使用protoc
文件生成rpc服务
命令:
goctl rpc protoc ./proto/ucenter.proto --go_out=./code/ucenter --go-grpc_out=./code/ucenter --zrpc_out=./code/ucenter --multiple
注意:--go_out
、--go-grpc_out
、--zrpc_out
三者配置的路径需要完全一致,否则会报下列错误。
the output of pb.go and _grpc.pb.go must not be the same with --zrpc_out
6 第四章 数据库操作(MySQL)
6.1 知识点
sqlx
代码文件讲解- 新增操作接口及其实现
RPC
服务使用sqlx
步骤sqlx
使用事务- 使用泛型进一步优化
sqlx
代码 sqlc
及缓存的使用sqlc
执行源码分析与model
详解go-zero
使用gorm
go-zero
使用Redis
6.2 相关命令
生成sqlx
代码命令:
注意:最后的参数-style=go_zero
是指定生成文件名称的格式,这里是蛇形命名,不喜欢的可以去除这个参数。
- 使用
sql 文件
生成sqlx
代码的命令:【推荐】
单表:
goctl model mysql ddl -src="./rpc/database/sql/user/zero_users.sql" -dir="./rpc/database/sqlx/usermodel" -style=go_zero
多表:
goctl model mysql ddl -src="./rpc/database/sql/user/zero_*.sql" -dir="./rpc/database/sqlx/usermodel" -style=go_zero
-src
:sql
文件目录;
-dir
:sqlx
代码目录;
- 使用
数据库连接
生成sqlx
代码的命令:
goctl model mysql datasource -url="root:root@tcp(127.0.0.1:3357)/go-zero-micro" -table="zero_users" -dir="./rpc/database/sqlx/usermodel"
-url
:数据库连接;
-table
:数据表;
-dir
:sqlx
代码目录;
生成sqlc
代码命令:
同生成sqlx
代码的命令类似,只是后面需要再加一个 -cache
即可。
- 使用
sql 文件
生成sqlc
代码的命令:【推荐】
单表:
goctl model mysql ddl -src="./rpc/database/sql/user/zero_users.sql" -dir="./rpc/database/sqlc/usermodel" -style=go_zero -cache
多表:
goctl model mysql ddl -src="./rpc/database/sql/user/zero_*.sql" -dir="./rpc/database/sqlc/usermodel" -style=go_zero -cache
-src
:sql
文件目录;
-dir
:sqlc
代码目录;
- 使用
数据库连接
生成sqlc
代码的命令:
goctl model mysql datasource -url="root:root@tcp(127.0.0.1:3357)/go-zero-micro" -table="zero_users" -dir="./rpc/database/sqlc/usermodel" -cache
-url
:数据库连接;
-table
:数据表;
-dir
:sqlc
代码目录;
7 第五章 集成asynq
7.1 知识点
asynq
文档asynq
介绍asynq
具体讲解及示例asynq
亲自实践go-zero
中使用asynq
7.2 相关命令
无
8 第六章 分布式事务dtm
8.1 知识点
- 分布式事务
dtm
文档 - 分布式事务解决方案
- 分布式事务
dtm
官方示例 go-zero
使用dtm
参考代码- 使用
dtm
注意事项 dtm
详解
8.2 相关命令
无