Go - 分布式微服务
环境搭建
wget https://go.dev/dl/go1.17.2.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.17.2.linux-amd64.tar.gz
go version
export GOBIN=$GOPATH/bin
export PATH=$GOPATH:$PATH
export GOROOT=/usr/local/go
export GOPROXY=https://goproxy.cn/,direct
# goctl
go install github.com/zeromicro/go-zero/tools/[email protected]
服务拆分
一个商城项目可以拆分为
用户服务(user)、订单服务(order)、产品服务(product)、支付服务(pay)...
每个服务都可以再分为 api 服务和 rpc 服务
api 服务对外,可提供给 app 调用
rpc 服务是对内的,可提供给内部 api 服务或者其他 rpc 服务调用
创建项目
mkdir mall && cd mall && go mod init mall
mkdir service && cd service
用户服务
api服务 |
端口: 8000 |
rpc服务 |
端口: 9000 |
login |
用户登录接口 |
login |
用户登录接口 |
register |
用户注册接口 |
register |
用户注册接口 |
userinfo |
用户信息接口 |
userinfo |
用户信息接口 |
... |
|
|
|
mkdir -p user/api user/rpc user/model
产品服务
api服务 |
端口: 8001 |
rpc服务 |
端口: 9001 |
create |
产品创建接口 |
create |
产品创建接口 |
update |
产品修改接口 |
update |
产品修改接口 |
remove |
产品删除接口 |
remove |
产品删除接口 |
detail |
产品详情接口 |
detail |
产品详情接口 |
... |
|
|
|
mkdir -p product/api product/rpc product/model
订单服务
api服务 |
端口: 8002 |
rpc服务 |
端口: 9002 |
create |
订单创建接口 |
create |
订单创建接口 |
update |
订单修改接口 |
update |
订单修改接口 |
remove |
订单删除接口 |
remove |
订单删除接口 |
detail |
订单详情接口 |
detail |
订单详情接口 |
... |
|
|
|
mkdir -p order/api order/rpc order/model
支付服务
api服务 |
端口: 8003 |
rpc服务 |
端口: 9003 |
create |
支付创建接口 |
create |
支付创建接口 |
detail |
支付详情接口 |
update |
支付详情接口 |
callback |
支付回调接口 |
remove |
支付回调接口 |
... |
|
|
|
mkdir -p pay/api pay/rpc pay/model
$ tree mall
mall
├── common
├── go.mod
└── service
├── order
│ ├── api
│ ├── model
│ └── rpc
├── pay
│ ├── api
│ ├── model
│ └── rpc
├── product
│ ├── api
│ ├── model
│ └── rpc
└── user
├── api
├── model
└── rpc
用户服务
产品服务
订单服务
支付服务
Auth 验证
服务监控
链路追踪
分布式事务
参考
https://github.com/zeromicro/go-zero/blob/master/readme-cn.md
https://learnku.com/articles/64566