学习笔记:带你十天轻松搞定 Go 微服务系列(二)
1、学习课程
2、服务拆分
2.1 按业务服务拆分
- 用户服务(user)
- 订单服务(order)
- 产品服务(product)
- 支付服务(pay)
- 售后服务(afterSale)
- … …
2.2 按调用方式拆分
区别 | API 服务 | RPC 服务 |
---|---|---|
传输协议 | 基于 HTTP 协议 | 可以基于 HTTP 协议,也可以基于 TCP 协议 |
传输效率 | 如果是基于 http1.1 的协议,请求中会包含很多无用的内容,如果是基于 HTTP2.0,那么简单的封装下可以作为一个 RPC 来使用,这时标准的 RPC 框架更多的是服务治理。 | 使用自定义的 TCP 协议,可以让请求报文体积更小,或者使用 HTTP2 协议,也可以很好的减小报文体积,提高传输效率 |
性能消耗 | 大部分是基于 json 实现的,字节大小和序列化耗时都比 thrift 要更消耗性能 | 可以基于 thrift 实现高效的二进制传输 |
负载均衡 | 需要配置 Nginx、HAProxy 配置 | 基本自带了负载均衡策略 |
服务治理:(下游服务新增,重启,下线时如何不影响上游调用者) | 需要事先通知,如修改 NGINX 配置。 | 能做到自动通知,不影响上游 |
3、创建项目目录
3.1 在 code 中新建项目
$ cd gonivinck/code/
3.2 创建 mall 工程
$ mkdir mall && cd mall
$ go mod init mall
3.3 创建 common 目录
$ mkdir common
3.4 创建 service 目录
$ mkdir service && cd service
3.5 创建 user api,user rpc,user model 目录
$ mkdir -p user/api
$ mkdir -p user/rpc
$ mkdir -p user/model
3.6 创建 product api,product rpc,product model 目录
$ mkdir -p product/api
$ mkdir -p product/rpc
$ mkdir -p product/model
3.7 创建 order api,order rpc,order model 目录
$ mkdir -p order/api
$ mkdir -p order/rpc
$ mkdir -p order/model
3.8 创建 pay api,pay rpc,pay model 目录
$ mkdir -p pay/api
$ mkdir -p pay/rpc
$ mkdir -p pay/model
3.9 最终项目目录
├── common # 通用库
├── service # 服务
│ ├── order
│ │ ├── api # order api 服务
│ │ ├── model # order 数据模型
│ │ └── rpc # order rpc 服务
│ ├── pay
│ │ ├── api # pay api 服务
│ │ ├── model # pay 数据模型
│ │ └── rpc # pay rpc 服务
│ ├── product
│ │ ├── api # product api 服务
│ │ ├── model # product 数据模型
│ │ └── rpc # product rpc 服务
│ └── user
│ ├── api # user api 服务
│ ├── model # user 数据模型
│ └── rpc # user rpc 服务
└── go.mod
4、系列
学习笔记:带你十天轻松搞定 Go 微服务系列(一)- 环境搭建
学习笔记:带你十天轻松搞定 Go 微服务系列(二)- 服务拆分
学习笔记:带你十天轻松搞定 Go 微服务系列(三)- 用户服务
学习笔记:带你十天轻松搞定 Go 微服务系列(四)- 产品服务
学习笔记:带你十天轻松搞定 Go 微服务系列(五)- 订单服务
学习笔记:带你十天轻松搞定 Go 微服务系列(六)- 支付服务
学习笔记:带你十天轻松搞定 Go 微服务系列(七)- RPC 服务 Auth 验证
学习笔记:带你十天轻松搞定 Go 微服务系列(八)- 服务监控
学习笔记:带你十天轻松搞定 Go 微服务系列(九)- 链路追踪
学习笔记:带你十天轻松搞定 Go 微服务系列大结局(十)- 分布式事务