- 安装了golang
- 安装并启动docker,安装了docker-compose
- 切换到了该工程目录
docker-compose up -d
GO111MODULE=on go build -o api/_api -mod=vendor api/*.go
GO111MODULE=on go build -o rpc/add/_add -mod=vendor rpc/add/*.go
GO111MODULE=on go build -o rpc/check/_check -mod=vendor rpc/check/*.go
- 创建表
docker-compose exec -T db mysql gozero < rpc/model/book.sql
- 启动add
rpc/add/_add -f rpc/add/etc/add.yaml > /dev/null 2>&1 &
- 启动check
rpc/check/_check -f rpc/check/etc/check.yaml > /dev/null 2>&1 &
- 启动api gateway
api/_api -f api/etc/bookstore-api.yaml > /dev/null 2>&1 &
- 调用服务
curl -i "http://localhost:8888/add?book=go-zero&price=10"
返回如下:
HTTP/1.1 200 OK
Content-Type: application/json
Date: Thu, 03 Sep 2020 09:42:13 GMT
Content-Length: 11
{"ok":true}
curl -i "http://localhost:8888/check?book=go-zero"
返回如下:
HTTP/1.1 200 OK
Content-Type: application/json
Date: Thu, 03 Sep 2020 09:47:34 GMT
Content-Length: 25
{"found":true,"price":10}
- 过载处理 如果add服务过载了,开一台新机器,启动新的add服务注册到etcd.自动开始均衡负载. 或者直接部署到k8s,自动伸缩. 演示效果就修改一下 rpc/add/etc/add.yaml 端口,保存成新的配置文件,启动一个新服务.
rpc/add/_add -f rpc/add/etc/add2.yaml > /dev/null 2>&1 &
该项目使用docker,快速搭建运行环境,以流畅体验go-zero. 结合科学上网,体验更佳.因为docker启动时,会自动拉取国外服务器上的镜像. or 参考 Docker Hub 镜像加速器.
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://1nj0zren.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"http://f1361db2.m.daocloud.io",
"https://registry.docker-cn.com"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
感谢go-zero 作者,开源了这一优秀的项目. 关于demo的实现过程,请参考官方git 链接,此处不赘述了.