likes
comments
collection
share

开箱体验一个集成了各种工程实践的web和rpc微服务框架Go-zero

作者站长头像
站长
· 阅读数 18

我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第7篇文章,点击查看活动详情

前言

之前做微服务开发一直用的go-micro,最近发现了一个好用的go微服务框架——go-zero,它是一个集成了各种工程实践的 webrpc 框架。并且可以根据定义的 api 文件一键生成 Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript 代码,并可直接运行。听起来是不是感觉很6,那就快来一起体验一下吧。

go-zero特性

go-zero是一个集成了各种工程实践的web和rpc框架。通过弹性设计保障了大并发服务端的稳定性。有如下主要特性:

  • 极简的API定义和生成工具goctl,尽可能少的编写代码
  • 完全兼容net/http
  • 支持中间件,方便扩展
  • 高性能,高并发支撑
  • 内建服务发现、负载均衡
  • 内建限流、熔断、降载,且自动触发,自动恢复
  • API参数自动校验
  • 自动缓存控制
  • 链路追踪、统计报警等

开箱体验一个集成了各种工程实践的web和rpc微服务框架Go-zero

安装 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

开箱体验一个集成了各种工程实践的web和rpc微服务框架Go-zero

使用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

目录结构如下:

开箱体验一个集成了各种工程实践的web和rpc微服务框架Go-zero

默认侦听在 8888 端口(可以在配置文件里修改)

开箱体验一个集成了各种工程实践的web和rpc微服务框架Go-zero

浏览器访问http://127.0.0.1:8888/from/me

开箱体验一个集成了各种工程实践的web和rpc微服务框架Go-zero

小结

总的来说go-zero使用起来很方便。go-zero封装的很好,可以通过goctl自动生成代码,使开发者基本只用关注业务逻辑。