zeromicro/go-zero

GitHub: zeromicro/go-zero

集成了弹性设计与代码生成工具的云原生 Go 微服务框架,旨在简化开发流程并保障高并发下的系统稳定性。

Stars: 32746 | Forks: 4286

# go-zero

go-zero 是一个集成了大量工程实践内置的 web 和 rpc 框架。它诞生于具有弹性设计的高并发服务稳定性保障需求,并已服务于拥有数千万用户的站点多年。
[![codecov](https://codecov.io/gh/zeromicro/go-zero/branch/master/graph/badge.svg)](https://codecov.io/gh/zeromicro/go-zero) [![Go Report Card](https://goreportcard.com/badge/github.com/zeromicro/go-zero)](https://goreportcard.com/report/github.com/zeromicro/go-zero) [![Release](https://img.shields.io/github/v/release/zeromicro/go-zero.svg?style=flat-square)](https://github.com/zeromicro/go-zero) [![Go Reference](https://pkg.go.dev/badge/github.com/zeromicro/go-zero.svg)](https://pkg.go.dev/github.com/zeromicro/go-zero) [![Awesome Go](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/avelino/awesome-go) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Discord](https://img.shields.io/discord/794530774463414292?label=chat&logo=discord)](https://discord.gg/4JQvC5A4Fe)
## 🤷‍ 什么是 go-zero? English | [简体中文](readme-cn.md) zeromicro%2Fgo-zero | Trendshift go-zero - A web & rpc framework written in Go. | Product Hunt 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 语法,一条命令即可生成多种不同语言 * 自动验证来自客户端的请求参数 * 丰富的内置微服务管理和并发工具包 Architecture ## go-zero 的背景 2018 年初,我们从 Java+MongoDB 的单体架构转型为微服务,选择了: * **Golang** - 高性能、语法简单、优秀的部署体验和低资源消耗 * **自研微服务框架** - 更好的问题隔离、更容易的功能扩展和更快的问题解决 ## go-zero 的设计考量 go-zero 遵循以下核心设计原则: * **极简** - 保持简单,第一性原理 * **高可用** - 在高并发下保持稳定 * **弹性** - 面向失败编程,带有自适应保护 * **对开发者友好** - 封装复杂性,一件事只有一种做法 * **易于扩展** - 灵活的架构以适应增长 ## go-zero 的实现与特性 go-zero 集成了工程最佳实践: * **代码生成** - 强大的工具以最小化样板代码 * **极简 API** - 清晰的接口,完全兼容 net/http * **高性能** - 针对速度和效率进行了优化 * **弹性** - 内置熔断、限流、降载、超时控制 * **服务网格** - 服务发现、负载均衡、调用链追踪 * **开发者工具** - 自动参数校验、缓存管理、指标和监控 ![Resilience](https://raw.githubusercontent.com/zeromicro/zero-doc/main/doc/images/resilience-en.png) ## go-zero 架构 image ## 安装 在你的项目下运行以下命令: ``` 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 ... ## 性能测试 ![benchmark](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/ac573f681a142029.png) [查看测试代码](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 加入交流 ## 云原生全景图

   

go-zero 已入选 [CNCF 云原生全景图](https://landscape.cncf.io/?selected=go-zero)。 ## 给个 Star! ⭐ 如果你喜欢这个项目或正在使用它来学习或构建你自己的解决方案,请给它一个 star 以获取新版本的更新。你的支持很重要!
标签:API网关, EVTX分析, Golang, go-zero, Go语言, Python工具, RPC框架, Web框架, 中间件, 代码生成, 分布式系统, 后端开发, 响应大小分析, 子域名突变, 安全编程, 并发编程, 幻觉检测, 开源框架, 弹性设计, 微服务框架, 持续集成, 搜索引擎查询, 日志审计, 服务治理, 渗透测试工具, 生产力工具, 程序破解, 高并发