diff --git a/readme.md b/readme.md index 883dc3ca..77e8b76a 100644 --- a/readme.md +++ b/readme.md @@ -31,12 +31,12 @@ go-zero contains simple API description syntax and code generation tool called ` #### Advantages of go-zero: -* improve the stability of the services with tens of millions of daily active users -* builtin chained timeout control, concurrency control, rate limit, adaptive circuit breaker, adaptive load shedding, even no configuration needed -* 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 +* Improves the stability of the services with tens of millions of daily active users +* Builtin chained timeout control, concurrency control, rate limit, adaptive circuit breaker, adaptive load shedding, even no configuration needed +* 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 Architecture @@ -45,27 +45,27 @@ go-zero contains simple API description syntax and code generation tool called ` 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 + * 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 + * Easy to locate the problems + * Easy to extend the features ## Design considerations on go-zero By designing the microservice architecture, we expected to ensure stability, as well as productivity. And from just the beginning, we have the following design principles: -* keep it simple -* high availability -* stable on high concurrency -* 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 +* Keep it simple +* High availability +* Stable on high concurrency +* 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 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. @@ -73,19 +73,19 @@ After almost half a year, we finished the transfer from a monolithic system to m 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 -* high performance -* 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 -* chained timeout control -* auto management of data caching -* call tracing, metrics, and monitoring -* high concurrency protected +* Powerful tool included, less code to write +* Simple interfaces +* Fully compatible with net/http +* Middlewares are supported, easy to extend +* High performance +* 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 +* Chained timeout control +* Auto management of data caching +* Call tracing, metrics, and monitoring +* High concurrency protected As below, go-zero protects the system with a couple of layers and mechanisms: @@ -105,13 +105,13 @@ go get -u github.com/zeromicro/go-zero ## Quick Start -1. full examples can be checked out from below: +1. Full examples can be checked out from below: [Rapid development of microservice systems](https://github.com/zeromicro/zero-doc/blob/main/doc/shorturl-en.md) [Rapid development of microservice systems - multiple RPCs](https://github.com/zeromicro/zero-doc/blob/main/docs/zero/bookstore-en.md) -2. install goctl +2. Install goctl `goctl`can be read as `go control`. `goctl` means not to be controlled by code, instead, we control it. The inside `go` is not `golang`. At the very beginning, I was expecting it to help us improve productivity, and make our lives easier. @@ -135,7 +135,7 @@ go get -u github.com/zeromicro/go-zero make sure goctl is executable. -3. create the API file, like greet.api, you can install the plugin of goctl in vs code, api syntax is supported. +3. Create the API file, like greet.api, you can install the plugin of goctl in vs code, api syntax is supported. ```go type ( @@ -160,7 +160,7 @@ go get -u github.com/zeromicro/go-zero goctl api -o greet.api ``` -4. generate the go server-side code +4. Generate the go server-side code ```shell goctl api go -api greet.api -dir greet