开箱体验一个集成了各种工程实践的web和rpc微服务框架Go-zero
我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第7篇文章,点击查看活动详情
前言
之前做微服务开发一直用的go-micro
,最近发现了一个好用的go微服务框架——go-zero
,它是一个集成了各种工程实践的 web
和 rpc
框架。并且可以根据定义的 api 文件一键生成 Go
, iOS
, Android
, Kotlin
, Dart
, TypeScript
, JavaScript
代码,并可直接运行。听起来是不是感觉很6,那就快来一起体验一下吧。
go-zero特性
go-zero是一个集成了各种工程实践的web和rpc框架。通过弹性设计保障了大并发服务端的稳定性。有如下主要特性:
- 极简的API定义和生成工具goctl,尽可能少的编写代码
- 完全兼容net/http
- 支持中间件,方便扩展
- 高性能,高并发支撑
- 内建服务发现、负载均衡
- 内建限流、熔断、降载,且自动触发,自动恢复
- API参数自动校验
- 自动缓存控制
- 链路追踪、统计报警等
安装 goctl 工具
在开始之前先安装goctl
工具,goctl
是 go-zero
微服务框架下的代码生成工具。使用 goctl
可显著提升开发效率,让开发人员将时间重点放在业务开发上。
# Go 1.15 及之前版本
GO111MODULE=on GOPROXY=https://goproxy.cn/,direct go get -u github.com/zeromicro/go-zero/tools/goctl@latest
# Go 1.16 及以后版本
GOPROXY=https://goproxy.cn/,direct go install github.com/zeromicro/go-zero/tools/goctl@latest
# For Mac
brew install goctl
# docker for amd64 architecture
docker pull kevinwan/goctl
# run goctl like
docker run --rm -it -v `pwd`:/app kevinwan/goctl goctl --help
使用goctl -v
查看版本,如果可以看到版本信息输出则代表成功。
具体操作指令可以参考文档:go-zero.dev/cn/docs/goc…
创建Demo
goctl api new zeroDemo
cd zeroDemo
go mod init
go mod tidy
go run zeroDemo.go -f etc/zeroDemo-api.yaml
目录结构如下:
默认侦听在 8888 端口(可以在配置文件里修改)
浏览器访问http://127.0.0.1:8888/from/me
小结
总的来说go-zero使用起来很方便。go-zero封装的很好,可以通过goctl自动生成代码,使开发者基本只用关注业务逻辑。
转载自:https://juejin.cn/post/7143821761715863560