[后端与go-zero框架的学习使用|青训营笔记]

82 阅读2分钟

这是我参与[第五届青训营]笔记创作活动的第15天 本文主要想对项目作业完成途中学习的go-zero框架部分进行总结。

一、本文主要内容

  1. go-zero框架是什么
  2. go-zero框架的一些使用

二、详细知识点介绍

go-zero框架是什么

GitHub:

https://github.com/zeromicro/go-zero

go-zero(收录于 CNCF 云原生技术全景图:landscape.cncf.io/?selected=g…)是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。

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

go-zero 是一个集成了各种工程实践的包含 web 和 rpc 框架,有如下主要特点:

  • 强大的工具支持,尽可能少的代码编写
  • 极简的接口
  • 完全兼容 net/http
  • 支持中间件,方便扩展
  • 高性能
  • 面向故障编程,弹性设计
  • 内建服务发现、负载均衡
  • 内建限流、熔断、降载,且自动触发,自动恢复
  • API 参数自动校验
  • 超时级联控制
  • 自动缓存控制
  • 链路跟踪、统计报警等
  • 高并发支撑,稳定保障了疫情期间每天的流量洪峰

go-zero框架的一些使用

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

  1. 快速生成 api 服务
goctl api new greet
cd greet
go mod init
go mod tidy
go run greet.go -f etc/greet-api.yaml
  1. 可以根据 api 文件生成前端需要的 Java, TypeScript, Dart, JavaScript 代码
goctl api java -api greet.api -dir greet
goctl api dart -api greet.api -dir greet
...

一些goctl插件

goctl-swagger
goctl-android
goctl-go-compact