这是我参与「第五届青训营」笔记创作活动的第2天
由于微服务的广泛使用(似乎都成基础知识了),所以这次的大项目也准备采用微服务。
背景
go语言有很多微服务框架,比如Go-kit,Go-zero,Kitex。而Go-zero是一个集成了各种工程实践的 web 和 rpc 框架,其中包含的 API 定义和生成工具 goctl 可以一键生成代码框架,让程序员可以有更多时间关注业务逻辑的实现。
Go-zero快速入门
环境准备
- go语言以及go module配置
在CMD窗口依次输入下列代码查看环境变量
go env GO111MODULE #值应该是on
go env GOMODCACHE #输出了路径(不为空)
若不对,则输入下列代码修改
go env -w GO111MODULE="on"
go env -w GOMODCACHE=$GOPATH/pkg/mod
- goctl安装
根据自己go语言的版本在CMD输入对应的指令
# Go 1.15 及之前版本
go get -u github.com/zeromicro/go-zero/tools/goctl@latest
# Go 1.16 及以后版本
go install github.com/zeromicro/go-zero/tools/goctl@latest
安装完成后,可以在 $GOPATH/bin 路径下看到goctl.exe文件
踩的坑:
在CMD中输入 goctl -v 显示不支持的命令。原因是系统的环境变量没有配置
解决方法:编辑系统环境变量,在用户变量中找到Path变量编辑,在Path变量中新建一条,路径为goctl.exe文件所在文件夹
3. etcd安装
github地址
然后选择自己电脑对应操作系统的安装包,解压即可。
运行Demo
新建一个demo文件夹然后在文件夹打开CMD,输入下列指令
go mod init demo
#生成greet服务模板
goctl api new greet
go mod tidy
#启动服务
go run greet.go -f greet/etc/greet-api.yaml
可以看到服务启动了,默认监听的端口是8888,打开浏览器输入http://localhost:8888/from/you可以看到CMD窗口打印出请求日志
总结
微服务架构是现在的主流,目前Go语言也有许多微服务框架可供我们学习,今天只是刚刚入门,比如后面的熔断限流,以及如何将一个项目业务拆分成多个微服务才是更需要思考的。