Skip to content

mingpen/zero-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

前提

  • 安装了golang
  • 安装并启动docker,安装了docker-compose
  • 切换到了该工程目录

用docker启动etcd\mysql\redis

docker-compose up -d

编译程序

编译api gateway

GO111MODULE=on go build -o api/_api -mod=vendor api/*.go  

编译add服务 - 写操作

GO111MODULE=on go build -o rpc/add/_add -mod=vendor rpc/add/*.go

编译check服务 - 读操作

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 链接,此处不赘述了.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages