学习笔记:带你十天轻松搞定 Go 微服务系列(二)

1、学习课程

带你十天轻松搞定 Go 微服务系列(二)

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

学习笔记:带你十天轻松搞定 Go 微服务系列(二)_第1张图片

你可能感兴趣的:(golanggo-zero)