go-zero (listed in CNCF Landscape: https://landscape.cncf.io/?selected=go-zero) is a web and RPC framework with many built-in engineering practices. It was born to ensure the stability of the busy services with resilience design and has been serving sites with tens of millions of users for years.
go-zero contains simple API description syntax and a code generation tool called goctl. You can generate Go, iOS, Android, Kotlin, Dart, TypeScript, and JavaScript from .api files with goctl
.
Advantages of the Golang microservice framework go-zero:
- improve the stability of the services with tens of millions of daily active users
- builtin middlewares also can be integrated into your frameworks
- simple API syntax, one command to generate a couple of different languages
- auto validate the request parameters from clients
- plenty of builtin microservice management and concurrent toolkits
- builtin chained timeout control, concurrency control, rate limit, adaptive circuit breaker, adaptive load shedding, even no configuration needed
1. Backgrounds of the Golang Microservice Framework go-zero
At the beginning of 2018, we decided to re-design our system, from monolithic architecture with Java+MongoDB to microservice architecture. After research and comparison, we chose to:
- Golang based
- great performance
- simple syntax
- proven engineering efficiency
- extreme deployment experience
- less server resource consumption
- Self-designed microservice architecture
- I have rich experience in designing microservice architectures
- easy to locate the problems
- easy to extend the features
2. The Golang implementation and features of go-zero
go-zero is a web and RPC framework that integrates lots of engineering practices. The features are mainly listed below:
- powerful tool included less code to write
- simple interfaces
- fully compatible with net/http
- middlewares are supported, easy to extend
- failure-oriented programming, resilience design
- builtin service discovery, load balancing
- builtin concurrency control, adaptive circuit breaker, adaptive load shedding, auto-trigger, auto recover
- auto validation of API request parameters
- high performance
- chained timeout control
- auto management of data caching
- call tracing, metrics, and monitoring
- high concurrency protected
3. Design considerations of the Go Framework go-zero
By designing the microservice architecture, we expected to ensure stability and productivity. And from just the beginning, we have the following design principles:
- keep it simple
- high availability
- easy to extend
- resilience design, failure-oriented programming
- try best to be friendly to the business logic development, encapsulate the complexity
- one thing, one way
- stable on high concurrency
After almost half a year, we finished the transfer from a monolithic system to microservice system and deployed on August 2018. The new system guaranteed business growth and system stability.
There is no ads to display, Please add some