示例说明:
知识点大纲:
Docker
本地开发环境搭建go-zero api rpc
服务的使用go-zero api jwt
鉴权go-zero rpc auth
验证go-zero model
使用go-zero
服务监控go-zero
链路追踪
文章目录:
- go-zero实战:1 项目介绍
- go-zero实战:2 环境搭建
- go-zero实战:3 服务拆分
- go-zero实战:4 用户服务(user)
- go-zero实战:5 产品服务(product)
- go-zero实战:6 订单服务(order)
- go-zero实战:7 支付服务(pay)
- go-zero实战:8 RPC服务 Auth 验证
- go-zero实战:9 服务监控 Prometheus
- go-zero实战:10 链路追踪 Jaeger
- go-zero实战:11 分布式事务 DTM
目录结构:
1 | ├── common # 通用库 |
理解 go-zero
中的底层思想:
0、goctl (go control)
生成 model 命令
goctl model mysql ddl -src ./model/xxx.sql -dir ./model -c
生成 api 命令
goctl api go -api ./api/xxx.api -dir ./api
生成 rpc 命令
goctl rpc proto -src ./rpc/xxx.proto -dir ./rpc
1、api rpc
- api 对外(客户端、App、PC)
- rpc 对内 (api、rpc)
- rpc/svc 通常依赖处理 mysql(orm) redis(cache) 或者调用其他的 rpc 服务
- 服务之间最好单向调用(不然 a->b 和 b->a 容易造成错误指向矛盾)
2、etc config svc
- etc (配置文件)
- config (定义的 go 配置对象)
- svc (service context,用来传递给 logic 层的)
- etcd 的注册发现服务
3、interface
- 方法集
- 结构体实现接口
- New + 结构体名称 初始化
4、开发流程
- goctl环境准备
- 数据库设计
- 业务开发
- 新建工程
- 创建服务目录
- 创建服务类型(api/rpc/rmq/job/script)
- 编写api、proto文件
- 代码生成
- 生成数据库访问层代码model
- 配置config,yaml变更
- 资源依赖填充(ServiceContext)
- 添加中间件
- 业务代码填充
- 错误处理
赏
使用支付宝打赏
使用微信打赏
欢迎点击上方按钮对我打赏,谢谢你给我吃糖果