帶你十天輕鬆搞定 Go 微服務系列(二)

上篇文章開始,我們通過一個系列文章跟大家詳細展示一個 go-zero 微服務示例,整個系列分十篇文章,目錄結構如下:

  1. 環境搭建

  2. 服務拆分(本文)

  3. 用戶服務

  4. 產品服務

  5. 訂單服務

  6. 支付服務

  7. RPC 服務 Auth 驗證

  8. 服務監控

  9. 鏈路追蹤

  10. 分佈式事務

期望通過本系列帶你在本機利用 Docker 環境利用 go-zero 快速開發一個商城系統,讓你快速上手微服務。

完整示例代碼:https://github.com/nivin-studio/go-zero-mall

服務拆分

一個商城項目可拆分用戶服務(user)、訂單服務(order)、產品服務(product)、支付服務(pay)、售後服務(afterSale)...

每個服務都可以再分爲 api 服務和 rpc 服務。api 服務對外,可提供給 app 調用。rpc 服務是對內的,可提供給內部 api 服務或者其他 rpc 服務調用。整個項目服務依賴流程圖大致如下:

1 用戶服務(user)

cNBlWD

2 產品服務(product)

5KNeJO

3 訂單服務(order)

56wAYb

4 支付服務(pay)

ZCZ3bU

5 創建項目目錄

$ mkdir mall && cd mall
$ go mod init mall
$ mkdir common
$ mkdir service && cd service
$ mkdir -p user/api
$ mkdir -p user/rpc
$ mkdir -p user/model
$ mkdir -p product/api
$ mkdir -p product/rpc
$ mkdir -p product/model
$ mkdir -p order/api
$ mkdir -p order/rpc
$ mkdir -p order/model
$ mkdir -p pay/api
$ mkdir -p pay/rpc
$ mkdir -p pay/model
├── 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-zero 也是一個漸進式微服務框架,你可以在業務早期使用單體來快速滿足業務,當業務增長並有需要的時候,做最小的改動即可做到漸進式的服務拆分。

此類話題也可以在 go-zero 社區羣裏一起討論。

項目地址

https://github.com/zeromicro/go-zero

歡迎使用 go-zerostar 支持我們!

微信交流羣

關注『微服務實踐』公衆號並點擊 交流羣 獲取社區羣二維碼。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/yjBGPm3CK3e26D-qi4-mxQ