zeromicro/go-zero
GitHub: zeromicro/go-zero
集成了弹性设计与代码生成工具的云原生 Go 微服务框架,旨在简化开发流程并保障高并发下的系统稳定性。
Stars: 32746 | Forks: 4286
# go-zero
go-zero(已入选 CNCF Landscape:(https://landscape.cncf.io/?selected=go-zero)) 是一个集成了大量工程实践内置的 web 和 rpc 框架。它诞生于具有弹性设计的高并发服务稳定性保障需求,并已服务于拥有数千万用户的站点多年。
go-zero 包含简单的 API 描述语法和名为 `goctl` 的代码生成工具。你可以使用 `goctl` 从 .api 文件生成 Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript 代码。
#### go-zero 的优势:
* 提高了拥有数千万日活用户的服务稳定性
* 内置链式超时控制、并发控制、限流、自适应熔断、自适应降载,甚至无需配置
* 内置中间件也可集成到你的框架中
* 简单的 API 语法,一条命令即可生成多种不同语言
* 自动验证来自客户端的请求参数
* 丰富的内置微服务管理和并发工具包
## go-zero 的背景
2018 年初,我们从 Java+MongoDB 的单体架构转型为微服务,选择了:
* **Golang** - 高性能、语法简单、优秀的部署体验和低资源消耗
* **自研微服务框架** - 更好的问题隔离、更容易的功能扩展和更快的问题解决
## go-zero 的设计考量
go-zero 遵循以下核心设计原则:
* **极简** - 保持简单,第一性原理
* **高可用** - 在高并发下保持稳定
* **弹性** - 面向失败编程,带有自适应保护
* **对开发者友好** - 封装复杂性,一件事只有一种做法
* **易于扩展** - 灵活的架构以适应增长
## go-zero 的实现与特性
go-zero 集成了工程最佳实践:
* **代码生成** - 强大的工具以最小化样板代码
* **极简 API** - 清晰的接口,完全兼容 net/http
* **高性能** - 针对速度和效率进行了优化
* **弹性** - 内置熔断、限流、降载、超时控制
* **服务网格** - 服务发现、负载均衡、调用链追踪
* **开发者工具** - 自动参数校验、缓存管理、指标和监控

## go-zero 架构
## 安装
在你的项目下运行以下命令:
```
go get -u github.com/zeromicro/go-zero
```
## AI 原生开发
go-zero 团队为 Claude, GitHub Copilot, Cursor 提供了 AI 工具,以生成符合框架规范的代码。
### 三大核心项目
**[ai-context](https://github.com/zeromicro/ai-context)** - AI 助手的工作流指南
**[zero-skills](https://github.com/zeromicro/zero-skills)** - 包含示例的模式库
**[mcp-zero](https://github.com/zeromicro/mcp-zero)** - 通过 Model Context Protocol 的代码生成工具
### 快速设置
#### GitHub Copilot
```
git submodule add https://github.com/zeromicro/ai-context.git .github/ai-context
ln -s ai-context/00-instructions.md .github/copilot-instructions.md # macOS/Linux
# Windows: mklink .github\copilot-instructions.md .github\ai-context\00-instructions.md
git submodule update --remote .github/ai-context # Update
```
#### Cursor
```
git submodule add https://github.com/zeromicro/ai-context.git .cursorrules
git submodule update --remote .cursorrules # Update
```
#### Windsurf
```
git submodule add https://github.com/zeromicro/ai-context.git .windsurfrules
git submodule update --remote .windsurfrules # Update
```
#### Claude Desktop
```
git clone https://github.com/zeromicro/mcp-zero.git && cd mcp-zero && go build
# 配置: ~/Library/Application Support/Claude/claude_desktop_config.json
# 或者: claude mcp add --transport stdio mcp-zero --env GOCTL_PATH=/path/to/goctl -- /path/to/mcp-zero
```
### 工作原理
AI 助手协同使用这些工具:
1. **ai-context** - 工作流指引
2. **zero-skills** - 实现模式
3. **mcp-zero** - 实时代码生成
**示例**:创建一个 REST API → AI 读取 **ai-context** 获取工作流 → 调用 **mcp-zero** 生成代码 → 参考 **zero-skills** 获取模式 → 生成生产就绪的代码 ✅
## 快速开始
1. 完整示例:
[快速开发微服务系统](https://github.com/zeromicro/zero-doc/blob/main/doc/shorturl-en.md)
[快速开发微服务系统 - 多 RPC](https://github.com/zeromicro/zero-doc/blob/main/docs/zero/bookstore-en.md)
2. 安装 goctl
# 用于 Go
go install github.com/zeromicro/go-zero/tools/goctl@latest
# Mac 版
brew install goctl
# docker 跨平台
docker pull kevinwan/goctl
# 运行 goctl
docker run --rm -it -v `pwd`:/app kevinwan/goctl --help
确保 goctl 可执行并且在你的 $PATH 中。
3. 创建 API 文件 (greet.api):
type (
Request {
Name string `path:"name,options=[you,me]"` // parameters are auto validated
}
Response {
Message string `json:"message"`
}
)
service greet-api {
@handler GreetHandler
get /greet/from/:name(Request) returns (Response)
}
生成 .api 模板:
goctl api -o greet.api
4. 生成 Go 服务端代码
goctl api go -api greet.api -dir greet
生成的目录结构:
├── greet
│ ├── etc
│ │ └── greet-api.yaml // configuration file
│ ├── greet.go // main file
│ └── internal
│ ├── config
│ │ └── config.go // configuration definition
│ ├── handler
│ │ ├── greethandler.go // get/put/post/delete routes are defined here
│ │ └── routes.go // routes list
│ ├── logic
│ │ └── greetlogic.go // request logic can be written here
│ ├── svc
│ │ └── servicecontext.go // service context, mysql/redis can be passed in here
│ └── types
│ └── types.go // request/response defined here
└── greet.api // api description file
运行服务:
cd greet
go mod tidy
go run greet.go -f etc/greet-api.yaml
默认端口:8888 (可在 etc/greet-api.yaml 中配置)
使用 curl 测试:
curl -i http://localhost:8888/greet/from/you
响应:
HTTP/1.1 200 OK
Date: Sun, 30 Aug 2020 15:32:35 GMT
Content-Length: 0
5. 编写业务逻辑
* 通过 servicecontext.go 传递依赖项 (mysql, redis 等)
* 根据 .api 定义在 logic 包中添加逻辑代码
6. 生成多种语言的客户端代码
goctl api java -api greet.api -dir greet
goctl api dart -api greet.api -dir greet
...
## 性能测试

[查看测试代码](https://github.com/smallnest/go-web-framework-benchmark)
## 文档
* [文档](https://go-zero.dev/)
* [快速开发微服务系统](https://github.com/zeromicro/zero-doc/blob/main/doc/shorturl-en.md)
* [快速开发微服务系统 - 多 RPC](https://github.com/zeromicro/zero-doc/blob/main/docs/zero/bookstore-en.md)
* [示例](https://github.com/zeromicro/zero-examples)
## 交流群
通过 https://discord.gg/4JQvC5A4Fe 加入交流
## 云原生全景图
[](https://codecov.io/gh/zeromicro/go-zero)
[](https://goreportcard.com/report/github.com/zeromicro/go-zero)
[](https://github.com/zeromicro/go-zero)
[](https://pkg.go.dev/github.com/zeromicro/go-zero)
[](https://github.com/avelino/awesome-go)
[](https://opensource.org/licenses/MIT)
[](https://discord.gg/4JQvC5A4Fe)
## 🤷 什么是 go-zero?
English | [简体中文](readme-cn.md)
## go-zero 的背景
2018 年初,我们从 Java+MongoDB 的单体架构转型为微服务,选择了:
* **Golang** - 高性能、语法简单、优秀的部署体验和低资源消耗
* **自研微服务框架** - 更好的问题隔离、更容易的功能扩展和更快的问题解决
## go-zero 的设计考量
go-zero 遵循以下核心设计原则:
* **极简** - 保持简单,第一性原理
* **高可用** - 在高并发下保持稳定
* **弹性** - 面向失败编程,带有自适应保护
* **对开发者友好** - 封装复杂性,一件事只有一种做法
* **易于扩展** - 灵活的架构以适应增长
## go-zero 的实现与特性
go-zero 集成了工程最佳实践:
* **代码生成** - 强大的工具以最小化样板代码
* **极简 API** - 清晰的接口,完全兼容 net/http
* **高性能** - 针对速度和效率进行了优化
* **弹性** - 内置熔断、限流、降载、超时控制
* **服务网格** - 服务发现、负载均衡、调用链追踪
* **开发者工具** - 自动参数校验、缓存管理、指标和监控

## go-zero 架构
## 安装
在你的项目下运行以下命令:
```
go get -u github.com/zeromicro/go-zero
```
## AI 原生开发
go-zero 团队为 Claude, GitHub Copilot, Cursor 提供了 AI 工具,以生成符合框架规范的代码。
### 三大核心项目
**[ai-context](https://github.com/zeromicro/ai-context)** - AI 助手的工作流指南
**[zero-skills](https://github.com/zeromicro/zero-skills)** - 包含示例的模式库
**[mcp-zero](https://github.com/zeromicro/mcp-zero)** - 通过 Model Context Protocol 的代码生成工具
### 快速设置
#### GitHub Copilot
```
git submodule add https://github.com/zeromicro/ai-context.git .github/ai-context
ln -s ai-context/00-instructions.md .github/copilot-instructions.md # macOS/Linux
# Windows: mklink .github\copilot-instructions.md .github\ai-context\00-instructions.md
git submodule update --remote .github/ai-context # Update
```
#### Cursor
```
git submodule add https://github.com/zeromicro/ai-context.git .cursorrules
git submodule update --remote .cursorrules # Update
```
#### Windsurf
```
git submodule add https://github.com/zeromicro/ai-context.git .windsurfrules
git submodule update --remote .windsurfrules # Update
```
#### Claude Desktop
```
git clone https://github.com/zeromicro/mcp-zero.git && cd mcp-zero && go build
# 配置: ~/Library/Application Support/Claude/claude_desktop_config.json
# 或者: claude mcp add --transport stdio mcp-zero --env GOCTL_PATH=/path/to/goctl -- /path/to/mcp-zero
```
### 工作原理
AI 助手协同使用这些工具:
1. **ai-context** - 工作流指引
2. **zero-skills** - 实现模式
3. **mcp-zero** - 实时代码生成
**示例**:创建一个 REST API → AI 读取 **ai-context** 获取工作流 → 调用 **mcp-zero** 生成代码 → 参考 **zero-skills** 获取模式 → 生成生产就绪的代码 ✅
## 快速开始
1. 完整示例:
[快速开发微服务系统](https://github.com/zeromicro/zero-doc/blob/main/doc/shorturl-en.md)
[快速开发微服务系统 - 多 RPC](https://github.com/zeromicro/zero-doc/blob/main/docs/zero/bookstore-en.md)
2. 安装 goctl
# 用于 Go
go install github.com/zeromicro/go-zero/tools/goctl@latest
# Mac 版
brew install goctl
# docker 跨平台
docker pull kevinwan/goctl
# 运行 goctl
docker run --rm -it -v `pwd`:/app kevinwan/goctl --help
确保 goctl 可执行并且在你的 $PATH 中。
3. 创建 API 文件 (greet.api):
type (
Request {
Name string `path:"name,options=[you,me]"` // parameters are auto validated
}
Response {
Message string `json:"message"`
}
)
service greet-api {
@handler GreetHandler
get /greet/from/:name(Request) returns (Response)
}
生成 .api 模板:
goctl api -o greet.api
4. 生成 Go 服务端代码
goctl api go -api greet.api -dir greet
生成的目录结构:
├── greet
│ ├── etc
│ │ └── greet-api.yaml // configuration file
│ ├── greet.go // main file
│ └── internal
│ ├── config
│ │ └── config.go // configuration definition
│ ├── handler
│ │ ├── greethandler.go // get/put/post/delete routes are defined here
│ │ └── routes.go // routes list
│ ├── logic
│ │ └── greetlogic.go // request logic can be written here
│ ├── svc
│ │ └── servicecontext.go // service context, mysql/redis can be passed in here
│ └── types
│ └── types.go // request/response defined here
└── greet.api // api description file
运行服务:
cd greet
go mod tidy
go run greet.go -f etc/greet-api.yaml
默认端口:8888 (可在 etc/greet-api.yaml 中配置)
使用 curl 测试:
curl -i http://localhost:8888/greet/from/you
响应:
HTTP/1.1 200 OK
Date: Sun, 30 Aug 2020 15:32:35 GMT
Content-Length: 0
5. 编写业务逻辑
* 通过 servicecontext.go 传递依赖项 (mysql, redis 等)
* 根据 .api 定义在 logic 包中添加逻辑代码
6. 生成多种语言的客户端代码
goctl api java -api greet.api -dir greet
goctl api dart -api greet.api -dir greet
...
## 性能测试

[查看测试代码](https://github.com/smallnest/go-web-framework-benchmark)
## 文档
* [文档](https://go-zero.dev/)
* [快速开发微服务系统](https://github.com/zeromicro/zero-doc/blob/main/doc/shorturl-en.md)
* [快速开发微服务系统 - 多 RPC](https://github.com/zeromicro/zero-doc/blob/main/docs/zero/bookstore-en.md)
* [示例](https://github.com/zeromicro/zero-examples)
## 交流群
通过 https://discord.gg/4JQvC5A4Fe 加入交流
## 云原生全景图
标签:API网关, EVTX分析, Golang, go-zero, Go语言, Python工具, RPC框架, Web框架, 中间件, 代码生成, 分布式系统, 后端开发, 响应大小分析, 子域名突变, 安全编程, 并发编程, 幻觉检测, 开源框架, 弹性设计, 微服务框架, 持续集成, 搜索引擎查询, 日志审计, 服务治理, 渗透测试工具, 生产力工具, 程序破解, 高并发