# go-zero

A cloud-native Go framework for building resilient web and RPC microservices, with a code generation tool that scaffolds services and clients from API definitions.

go-zero is a Go framework for building web and RPC services, built around built-in engineering practices for keeping busy services stable, and used, according to the project, to serve sites with tens of millions of users. It includes a simple API description syntax and a code generation tool called goctl that can generate Go, iOS, Android, Kotlin, Dart, TypeScript and JavaScript code from .api files.

The framework has built-in chained timeout control, concurrency control, rate limiting, an adaptive circuit breaker and adaptive load shedding, often without extra configuration, and its middleware can also be integrated into other frameworks. It automatically validates request parameters from clients, and ships microservice management and concurrency toolkits alongside the core framework.

The project moved from a Java and MongoDB monolith to microservices in 2018, and go-zero was designed around simplicity, high availability under concurrency, resilience through failure-oriented programming, and being easy to extend.

Website: https://go-zero.dev
