Update readme.md (#3630)
This commit is contained in:
74
readme.md
74
readme.md
@@ -31,12 +31,12 @@ go-zero contains simple API description syntax and code generation tool called `
|
|||||||
|
|
||||||
#### Advantages of go-zero:
|
#### Advantages of go-zero:
|
||||||
|
|
||||||
* improve the stability of the services with tens of millions of daily active users
|
* 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 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
|
* Builtin middlewares also can be integrated into your frameworks
|
||||||
* simple API syntax, one command to generate a couple of different languages
|
* Simple API syntax, one command to generate a couple of different languages
|
||||||
* auto validate the request parameters from clients
|
* Auto validate the request parameters from clients
|
||||||
* plenty of builtin microservice management and concurrent toolkits
|
* Plenty of builtin microservice management and concurrent toolkits
|
||||||
|
|
||||||
<img src="https://raw.githubusercontent.com/zeromicro/zero-doc/main/doc/images/architecture-en.png" alt="Architecture" width="1500" />
|
<img src="https://raw.githubusercontent.com/zeromicro/zero-doc/main/doc/images/architecture-en.png" alt="Architecture" width="1500" />
|
||||||
|
|
||||||
@@ -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:
|
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
|
* Golang based
|
||||||
* great performance
|
* Great performance
|
||||||
* simple syntax
|
* Simple syntax
|
||||||
* proven engineering efficiency
|
* Proven engineering efficiency
|
||||||
* extreme deployment experience
|
* Extreme deployment experience
|
||||||
* less server resource consumption
|
* Less server resource consumption
|
||||||
* Self-designed microservice architecture
|
* Self-designed microservice architecture
|
||||||
* I have rich experience in designing microservice architectures
|
* I have rich experience in designing microservice architectures
|
||||||
* easy to locate the problems
|
* Easy to locate the problems
|
||||||
* easy to extend the features
|
* Easy to extend the features
|
||||||
|
|
||||||
## Design considerations on go-zero
|
## 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:
|
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
|
* Keep it simple
|
||||||
* high availability
|
* High availability
|
||||||
* stable on high concurrency
|
* Stable on high concurrency
|
||||||
* easy to extend
|
* Easy to extend
|
||||||
* resilience design, failure-oriented programming
|
* Resilience design, failure-oriented programming
|
||||||
* try best to be friendly to the business logic development, encapsulate the complexity
|
* Try best to be friendly to the business logic development, encapsulate the complexity
|
||||||
* one thing, one way
|
* 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.
|
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:
|
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
|
* Powerful tool included, less code to write
|
||||||
* simple interfaces
|
* Simple interfaces
|
||||||
* fully compatible with net/http
|
* Fully compatible with net/http
|
||||||
* middlewares are supported, easy to extend
|
* Middlewares are supported, easy to extend
|
||||||
* high performance
|
* High performance
|
||||||
* failure-oriented programming, resilience design
|
* Failure-oriented programming, resilience design
|
||||||
* builtin service discovery, load balancing
|
* Builtin service discovery, load balancing
|
||||||
* builtin concurrency control, adaptive circuit breaker, adaptive load shedding, auto-trigger, auto recover
|
* Builtin concurrency control, adaptive circuit breaker, adaptive load shedding, auto-trigger, auto recover
|
||||||
* auto validation of API request parameters
|
* Auto validation of API request parameters
|
||||||
* chained timeout control
|
* Chained timeout control
|
||||||
* auto management of data caching
|
* Auto management of data caching
|
||||||
* call tracing, metrics, and monitoring
|
* Call tracing, metrics, and monitoring
|
||||||
* high concurrency protected
|
* High concurrency protected
|
||||||
|
|
||||||
As below, go-zero protects the system with a couple of layers and mechanisms:
|
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
|
## 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](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)
|
[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.
|
`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.
|
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
|
```go
|
||||||
type (
|
type (
|
||||||
@@ -160,7 +160,7 @@ go get -u github.com/zeromicro/go-zero
|
|||||||
goctl api -o greet.api
|
goctl api -o greet.api
|
||||||
```
|
```
|
||||||
|
|
||||||
4. generate the go server-side code
|
4. Generate the go server-side code
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
goctl api go -api greet.api -dir greet
|
goctl api go -api greet.api -dir greet
|
||||||
|
|||||||
Reference in New Issue
Block a user