2020年8月开源的go-zero微服务框架非常热门。他来自好未来(学而思)的研发团队。这样的研发团队还是很有想法的。当然类似这样的微服务框架其实早就有了,比如go-microgo-kit等大家也可以尝试。

项目地址:https://github.com/tal-tech/go-zero

文档说明:https://www.yuque.com/tal-tech/go-zero

go-zero介绍

go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。

go-zero 包含极简的 API 定义和生成工具 goctl,可以根据定义的 api 文件一键生成 Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript 代码,并可直接运行。

使用 go-zero 的好处:

  • 轻松获得支撑千万日活服务的稳定性
  • 内建级联超时控制、限流、自适应熔断、自适应降载等微服务治理能力,无需配置和额外代码
  • 微服务治理中间件可无缝集成到其它现有框架使用
  • 极简的 API 描述,一键生成各端代码
  • 自动校验客户端请求参数合法性
  • 大量微服务治理和并发工具包

放一张官方的最佳实践全家桶:

image-20210128230408351

goctl

go-zero的一大特色就是内置框架代码生成工具goctl。他能生成啥代码呢?看看作者咋说:

所有绿色背景的功能模块是自动生成的,按需激活,红色模块是需要自己写的,也就是增加下依赖,编写业务特有逻辑。

image-20210128161316788

看到这个图的介绍是不是很激动,一套代码搞定了这么多的事情。这就是架构的力量,大公司就是要搞这种研究的。

我看了一部分源代码,有些很不错的地方,也有些地方感觉实现的并不好,值得改进。

安装go-zero

go get -u github.com/tal-tech/go-zero/tools/goctl

安装goctl

cd bin\pkg\mod\github.com\tal-tech\go-zero@v1.1.4\tools\goctl
go build goctl.go

得到的goctl.exe文件放入 $GOPATH\bin目录下。

api语法说明:https://github.com/tal-tech/zero-doc/blob/main/doc/goctl.md

目标

要不给自己立个目标?分三步走:

  1. 学习框架,先用起来
  2. 研究框架,持续改进
  3. 总结经验,自立门户

(完)