[开源]缩短从需求到上线的距离,集成各种工程实践的Web和RPC框架
开源系统分类系统
![[开源]缩短从需求到上线的距离,集成各种工程实践的Web和RPC框架](https://yy123.ink/api/img/1782605541337-9indrg.jpg)
一、开源项目简介

go-zero(收录于 CNCF 云原生技术全景图)是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。
go-zero 包含极简的 API 定义和生成工具 goctl,可以根据定义的 api 文件一键生成 Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript 代码,并可直接运行。
使用 go-zero 的好处:
- 轻松获得支撑千万日活服务的稳定性
- 内建级联超时控制、限流、自适应熔断、自适应降载等微服务治理能力,无需配置和额外代码
- 微服务治理中间件可无缝集成到其它现有框架使用
- 极简的 API 描述,一键生成各端代码
- 自动校验客户端请求参数合法性
- 大量微服务治理和并发工具包
二、开源协议
使用MIT开源协议
三、界面展示



go-zero 是一个集成了各种工程实践的包含 web 和 rpc 框架,有如下主要特点:
- 强大的工具支持,尽可能少的代码编写
- 极简的接口
- 完全兼容 net/http
- 支持中间件,方便扩展
- 高性能
- 面向故障编程,弹性设计
- 内建服务发现、负载均衡
- 内建限流、熔断、降载,且自动触发,自动恢复
- API 参数自动校验
- 超时级联控制
- 自动缓存控制
- 链路跟踪、统计报警等
- 高并发支撑,稳定保障了疫情期间每天的流量洪峰
如下图,我们从多个层面保障了整体服务的高可用:

五、技术选型

我们使用 go-zero 的基本架构图

Installation
在项目目录下通过如下命令安装:
GO111MODULE=on GOPROXY=https://goproxy.cn/,direct go get -u github.com/zeromicro/go-zero
Quick Start
完整示例请查看 READMD.md 文档。
环境准备
在正式进入实际开发之前,我们需要做一些准备工作,比如:Go环境的安装,grpc代码生成使用的工具安装, 必备工具Goctl的安装,Golang环境配置等,本节将包含以下小节:(详细请查阅 READMD.md 文档)
- 开发流程
- golang安装
- go modudle配置
- goctl安装
- protoc & protoc-gen-go安装
- 其他
开发流程
- goctl环境准备
- 数据库设计
- 业务开发
- 新建工程
- 创建服务目录
- 创建服务类型(api/rpc/rmq/job/script)
- 编写api、proto文件
- 代码生成
- 生成数据库访问层代码model
- 配置config,yaml变更
- 资源依赖填充(ServiceContext)
- 添加中间件
- 业务代码填充
- 错误处理
开发工具
- Visual Studio Code
- Goland(推荐)
评论