You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by me...@apache.org on 2020/10/27 13:51:23 UTC

[apisix] branch master updated: feat(docs): update README (#2539)

This is an automated email from the ASF dual-hosted git repository.

membphis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix.git


The following commit(s) were added to refs/heads/master by this push:
     new 16f9753  feat(docs): update README (#2539)
16f9753 is described below

commit 16f9753fde4822b7877810604612b21ea821eb23
Author: 琚致远 <ju...@apache.org>
AuthorDate: Tue Oct 27 21:51:12 2020 +0800

    feat(docs): update README (#2539)
    
    more beautiful
---
 README.md    | 380 +++++++++++++++++++++++++++++++++-------------------------
 README_CN.md | 383 ++++++++++++++++++++++++++++++++++-------------------------
 2 files changed, 440 insertions(+), 323 deletions(-)

diff --git a/README.md b/README.md
index be741b7..bccb111 100644
--- a/README.md
+++ b/README.md
@@ -17,20 +17,25 @@
 #
 -->
 
-- [Chinese](README_CN.md)
-
-## APISIX
+# Apache APISIX
 
 [![Build Status](https://travis-ci.org/apache/apisix.svg?branch=master)](https://travis-ci.org/apache/apisix)
 [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/apache/apisix/blob/master/LICENSE)
 
-- Mail list: Mail to dev-subscribe@apisix.apache.org, follow the reply to subscribe the mail list.
-- **QQ Group**: 578997126(recommended), 552030619
-- Join in `apisix` channel at [Apache Slack](http://s.apache.org/slack-invite). If the link is not working, find the latest one at [Apache INFRA WIKI](https://cwiki.apache.org/confluence/display/INFRA/Slack+Guest+Invites).
-- ![Twitter Follow](https://img.shields.io/twitter/follow/ApacheAPISIX?style=social)
-- [bilibili video](https://space.bilibili.com/551921247)
+<p align="center">
+  <a href="https://github.com/apache/apisix">English</a> •
+  <a href="https://github.com/apache/apisix/blob/master/README_CN.md">中文</a>
+</p>
+
+<p align="center">
+  <a href="https://apisix.apache.org/">Website</a> •
+  <a href="https://github.com/apache/apisix/tree/master/doc">Docs</a> •
+  <a href="https://github.com/apache/apisix-dashboard">Dashboard</a> •
+  <a href="https://twitter.com/apacheapisix">Twitter</a>
+</p>
 
 ## What's Apache APISIX?
+
 Apache APISIX is a dynamic, real-time, high-performance API gateway, based on the Nginx library and etcd.
 
 APISIX provides rich traffic management features such as load balancing, dynamic upstream, canary release, circuit breaking, authentication, observability, and more.
@@ -43,173 +48,208 @@ The technical architecture of Apache APISIX:
 
 ![](doc/images/apisix.png)
 
+## Contents
+
+- [Features](#features)
+- [Documentation](#documentation)
+- [Get Started](#get-started)
+- [Dashboard](#dashboard)
+- [Benchmark](#benchmark)
+- [Apache APISIX vs Kong](#apache-apisix-vs-kong)
+- [Open Governance](#open-governance)
+- [Community](#community)
+- [Videos And Articles](#videos-and-articles)
+- [User Stories](#user-stories)
+- [Who Uses APISIX?](#who-uses-apisix)
+- [Landscape](#landscape)
+- [Logos](#logos)
+- [Contributing](#contributing)
+- [Acknowledgments](#acknowledgments)
+- [License](#license)
+
 ## Features
+
 You can use Apache APISIX as a traffic entrance to process all business data, including dynamic routing, dynamic upstream, dynamic certificates,
 A/B testing, canary release, blue-green deployment, limit rate, defense against malicious attacks, metrics, monitoring alarms, service observability, service governance, etc.
 
 - **All platforms**
-    - Cloud-Native: Platform agnostic, No vendor lock-in, APISIX can run from bare-metal to Kubernetes.
-    - Run Environment: Both OpenResty and Tengine are supported.
-    - Supports ARM64: Don't worry about the lock-in of the infra technology.
+
+  - Cloud-Native: Platform agnostic, No vendor lock-in, APISIX can run from bare-metal to Kubernetes.
+  - Run Environment: Both OpenResty and Tengine are supported.
+  - Supports ARM64: Don't worry about the lock-in of the infra technology.
 
 - **Multi protocols**
-    - [TCP/UDP Proxy](doc/stream-proxy.md): Dynamic TCP/UDP proxy.
-    - [Dynamic MQTT Proxy](doc/plugins/mqtt-proxy.md): Supports to load balance MQTT by `client_id`, both support MQTT [3.1.*](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html), [5.0](https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html).
-    - [gRPC proxy](doc/grpc-proxy.md): Proxying gRPC traffic.
-    - [gRPC transcoding](doc/plugins/grpc-transcode.md): Supports protocol transcoding so that clients can access your gRPC API by using HTTP/JSON.
-    - Proxy Websocket
-    - Proxy Protocol
-    - Proxy Dubbo: Dubbo Proxy based on Tengine.
-    - HTTP(S) Forward Proxy
-    - [SSL](doc/https.md): Dynamically load an SSL certificate.
+
+  - [TCP/UDP Proxy](doc/stream-proxy.md): Dynamic TCP/UDP proxy.
+  - [Dynamic MQTT Proxy](doc/plugins/mqtt-proxy.md): Supports to load balance MQTT by `client_id`, both support MQTT [3.1.\*](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html), [5.0](https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html).
+  - [gRPC proxy](doc/grpc-proxy.md): Proxying gRPC traffic.
+  - [gRPC transcoding](doc/plugins/grpc-transcode.md): Supports protocol transcoding so that clients can access your gRPC API by using HTTP/JSON.
+  - Proxy Websocket
+  - Proxy Protocol
+  - Proxy Dubbo: Dubbo Proxy based on Tengine.
+  - HTTP(S) Forward Proxy
+  - [SSL](doc/https.md): Dynamically load an SSL certificate.
 
 - **Full dynamic**
-    - [Hot Updates And Hot Plugins](doc/plugins.md): Continuously updates its configurations and plugins without restarts!
-    - [Proxy Rewrite](doc/plugins/proxy-rewrite.md): Support rewrite the `host`, `uri`, `schema`, `enable_websocket`, `headers` of the request before send to upstream.
-    - [Response Rewrite](doc/plugins/response-rewrite.md): Set customized response status code, body and header to the client.
-    - [Serverless](doc/plugins/serverless.md): Invoke functions in each phase in APISIX.
-    - Dynamic Load Balancing: Round-robin load balancing with weight.
-    - Hash-based Load Balancing: Load balance with consistent hashing sessions.
-    - [Health Checks](doc/health-check.md): Enable health check on the upstream node, and will automatically filter unhealthy nodes during load balancing to ensure system stability.
-    - Circuit-Breaker: Intelligent tracking of unhealthy upstream services.
-    - [Proxy Mirror](doc/plugins/proxy-mirror.md): Provides the ability to mirror client requests.
+
+  - [Hot Updates And Hot Plugins](doc/plugins.md): Continuously updates its configurations and plugins without restarts!
+  - [Proxy Rewrite](doc/plugins/proxy-rewrite.md): Support rewrite the `host`, `uri`, `schema`, `enable_websocket`, `headers` of the request before send to upstream.
+  - [Response Rewrite](doc/plugins/response-rewrite.md): Set customized response status code, body and header to the client.
+  - [Serverless](doc/plugins/serverless.md): Invoke functions in each phase in APISIX.
+  - Dynamic Load Balancing: Round-robin load balancing with weight.
+  - Hash-based Load Balancing: Load balance with consistent hashing sessions.
+  - [Health Checks](doc/health-check.md): Enable health check on the upstream node, and will automatically filter unhealthy nodes during load balancing to ensure system stability.
+  - Circuit-Breaker: Intelligent tracking of unhealthy upstream services.
+  - [Proxy Mirror](doc/plugins/proxy-mirror.md): Provides the ability to mirror client requests.
 
 - **Fine-grained routing**
-    - [Supports full path matching and prefix matching](doc/router-radixtree.md#how-to-use-libradixtree-in-apisix)
-    - [Support all Nginx built-in variables as conditions for routing](/doc/router-radixtree.md#how-to-filter-route-by-nginx-builtin-variable), so you can use `cookie`,` args`, etc. as routing conditions to implement canary release, A/B testing, etc.
-    - Support [various operators as judgment conditions for routing](https://github.com/iresty/lua-resty-radixtree#operator-list), for example `{"arg_age", ">", 24}`
-    - Support [custom route matching function](https://github.com/iresty/lua-resty-radixtree/blob/master/t/filter-fun.t#L10)
-    - IPv6: Use IPv6 to match route.
-    - Support [TTL](doc/admin-api.md#route)
-    - [Support priority](doc/router-radixtree.md#3-match-priority)
-    - [Support Batch Http Requests](doc/plugins/batch-requests.md)
+
+  - [Supports full path matching and prefix matching](doc/router-radixtree.md#how-to-use-libradixtree-in-apisix)
+  - [Support all Nginx built-in variables as conditions for routing](/doc/router-radixtree.md#how-to-filter-route-by-nginx-builtin-variable), so you can use `cookie`,` args`, etc. as routing conditions to implement canary release, A/B testing, etc.
+  - Support [various operators as judgment conditions for routing](https://github.com/iresty/lua-resty-radixtree#operator-list), for example `{"arg_age", ">", 24}`
+  - Support [custom route matching function](https://github.com/iresty/lua-resty-radixtree/blob/master/t/filter-fun.t#L10)
+  - IPv6: Use IPv6 to match route.
+  - Support [TTL](doc/admin-api.md#route)
+  - [Support priority](doc/router-radixtree.md#3-match-priority)
+  - [Support Batch Http Requests](doc/plugins/batch-requests.md)
 
 - **Security**
-    - Authentications: [key-auth](doc/plugins/key-auth.md), [JWT](doc/plugins/jwt-auth.md), [basic-auth](doc/plugins/basic-auth.md), [wolf-rbac](doc/plugins/wolf-rbac.md)
-    - [IP Whitelist/Blacklist](doc/plugins/ip-restriction.md)
-    - [Referer Whitelist/Blacklist](doc/plugins/referer-restriction.md)
-    - [IdP](doc/plugins/openid-connect.md): Support external authentication services, such as Auth0, okta, etc., users can use this to connect to OAuth 2.0 and other authentication methods.
-    - [Limit-req](doc/plugins/limit-req.md)
-    - [Limit-count](doc/plugins/limit-count.md)
-    - [Limit-concurrency](doc/plugins/limit-conn.md)
-    - Anti-ReDoS(Regular expression Denial of Service): Built-in policies to Anti ReDoS without configuration.
-    - [CORS](doc/plugins/cors.md) Enable CORS(Cross-origin resource sharing) for your API.
-    - [URI Blocker](doc/plugins/uri-blocker.md): Block client request by URI.
-    - [Request Validator](doc/plugins/request-validation.md)
+
+  - Authentications: [key-auth](doc/plugins/key-auth.md), [JWT](doc/plugins/jwt-auth.md), [basic-auth](doc/plugins/basic-auth.md), [wolf-rbac](doc/plugins/wolf-rbac.md)
+  - [IP Whitelist/Blacklist](doc/plugins/ip-restriction.md)
+  - [Referer Whitelist/Blacklist](doc/plugins/referer-restriction.md)
+  - [IdP](doc/plugins/openid-connect.md): Support external authentication services, such as Auth0, okta, etc., users can use this to connect to OAuth 2.0 and other authentication methods.
+  - [Limit-req](doc/plugins/limit-req.md)
+  - [Limit-count](doc/plugins/limit-count.md)
+  - [Limit-concurrency](doc/plugins/limit-conn.md)
+  - Anti-ReDoS(Regular expression Denial of Service): Built-in policies to Anti ReDoS without configuration.
+  - [CORS](doc/plugins/cors.md) Enable CORS(Cross-origin resource sharing) for your API.
+  - [URI Blocker](doc/plugins/uri-blocker.md): Block client request by URI.
+  - [Request Validator](doc/plugins/request-validation.md)
 
 - **OPS friendly**
-    - OpenTracing: support [Apache Skywalking](doc/plugins/skywalking.md) and [Zipkin](doc/plugins/zipkin.md)
-    - works with external service discovery:In addition to the built-in etcd, it also supports `Consul` and `Nacos` [DNS discovery mode](https://github.com/apache/apisix/issues/1731#issuecomment-646392129), and [Eureka](doc/discovery.md)
-    - Monitoring And Metrics: [Prometheus](doc/plugins/prometheus.md)
-    - Clustering: APISIX nodes are stateless, creates clustering of the configuration center, please refer to [etcd Clustering Guide](https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/clustering.md).
-    - High availability: support to configure multiple etcd addresses in the same cluster.
-    - Dashboard: Built-in dashboard to control APISIX.
-    - Version Control: Supports rollbacks of operations.
-    - CLI: start\stop\reload APISIX through the command line.
-    - [Stand-alone mode](doc/stand-alone.md): Supports to load route rules from local yaml file, it is more friendly such as under the kubernetes(k8s).
-    - [Global Rule](doc/architecture-design.md#Global-Rule): Allows to run any plugin for all request, eg: limit rate, IP filter etc.
-    - High performance: The single-core QPS reaches 18k with an average delay of less than 0.2 milliseconds.
-    - [Fault Injection](doc/plugins/fault-injection.md)
-    - [REST Admin API](doc/admin-api.md): Using the REST Admin API to control Apache APISIX, which only allows 127.0.0.1 access by default, you can modify the `allow_admin` field in `conf/config.yaml` to specify a list of IPs that are allowed to call the Admin API. Also note that the Admin API uses key auth to verify the identity of the caller. **The `admin_key` field in `conf/config.yaml` needs to be modified before deployment to ensure security**.
-    - External Loggers: Export access logs to external log management tools. ([HTTP Logger](doc/plugins/http-logger.md), [TCP Logger](doc/plugins/tcp-logger.md), [Kafka Logger](doc/plugins/kafka-logger.md), [UDP Logger](doc/plugins/udp-logger.md))
+
+  - OpenTracing: support [Apache Skywalking](doc/plugins/skywalking.md) and [Zipkin](doc/plugins/zipkin.md)
+  - works with external service discovery:In addition to the built-in etcd, it also supports `Consul` and `Nacos` [DNS discovery mode](https://github.com/apache/apisix/issues/1731#issuecomment-646392129), and [Eureka](doc/discovery.md)
+  - Monitoring And Metrics: [Prometheus](doc/plugins/prometheus.md)
+  - Clustering: APISIX nodes are stateless, creates clustering of the configuration center, please refer to [etcd Clustering Guide](https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/clustering.md).
+  - High availability: support to configure multiple etcd addresses in the same cluster.
+  - Dashboard: Built-in dashboard to control APISIX.
+  - Version Control: Supports rollbacks of operations.
+  - CLI: start\stop\reload APISIX through the command line.
+  - [Stand-alone mode](doc/stand-alone.md): Supports to load route rules from local yaml file, it is more friendly such as under the kubernetes(k8s).
+  - [Global Rule](doc/architecture-design.md#Global-Rule): Allows to run any plugin for all request, eg: limit rate, IP filter etc.
+  - High performance: The single-core QPS reaches 18k with an average delay of less than 0.2 milliseconds.
+  - [Fault Injection](doc/plugins/fault-injection.md)
+  - [REST Admin API](doc/admin-api.md): Using the REST Admin API to control Apache APISIX, which only allows 127.0.0.1 access by default, you can modify the `allow_admin` field in `conf/config.yaml` to specify a list of IPs that are allowed to call the Admin API. Also note that the Admin API uses key auth to verify the identity of the caller. **The `admin_key` field in `conf/config.yaml` needs to be modified before deployment to ensure security**.
+  - External Loggers: Export access logs to external log management tools. ([HTTP Logger](doc/plugins/http-logger.md), [TCP Logger](doc/plugins/tcp-logger.md), [Kafka Logger](doc/plugins/kafka-logger.md), [UDP Logger](doc/plugins/udp-logger.md))
 
 - **Highly scalable**
-    - [Custom plugins](doc/plugin-develop.md): Allows hooking of common phases, such as `rewrite`, `access`, `header filer`, `body filter` and `log`, also allows to hook the `balancer` stage.
-    - Custom load balancing algorithms: You can use custom load balancing algorithms during the `balancer` phase.
-    - Custom routing: Support users to implement routing algorithms themselves.
+  - [Custom plugins](doc/plugin-develop.md): Allows hooking of common phases, such as `rewrite`, `access`, `header filer`, `body filter` and `log`, also allows to hook the `balancer` stage.
+  - Custom load balancing algorithms: You can use custom load balancing algorithms during the `balancer` phase.
+  - Custom routing: Support users to implement routing algorithms themselves.
+
+## Documentation
 
-## Configure and Installation
+[Document Indexing for Apache APISIX](doc/README.md)
+
+## Get Started
+
+### Configure and Installation
 
 APISIX Installed and tested in the following systems:
 
 CentOS 7, Ubuntu 16.04, Ubuntu 18.04, Debian 9, Debian 10, macOS, **ARM64** Ubuntu 18.04
 
 There are several ways to install the Apache Release version of APISIX:
+
 1. Source code compilation (applicable to all systems)
-    - Installation runtime dependencies: OpenResty and etcd, and compilation dependencies: luarocks. Refer to [install dependencies documentation](doc/install-dependencies.md)
-    - Download the latest source code release package:
-        ```shell
-        wget https://downloads.apache.org/apisix/2.0/apache-apisix-2.0-src.tgz
-        tar zxvf apache-apisix-2.0-src.tgz
-        ```
-    - Install the dependencies:
-        ```shell
-        cd apache-apisix-2.0
-        make deps
-        ```
-    - check version of APISIX:
-        ```shell
-        ./bin/apisix version
-        ```
-    - start APISIX:
-        ```shell
-        ./bin/apisix start
-        ```
+   - Installation runtime dependencies: OpenResty and etcd, and compilation dependencies: luarocks. Refer to [install dependencies documentation](doc/install-dependencies.md)
+   - Download the latest source code release package:
+     ```shell
+     $ wget https://downloads.apache.org/apisix/2.0/apache-apisix-2.0-src.tgz
+     $ tar zxvf apache-apisix-2.0-src.tgz
+     ```
+   - Install the dependencies:
+     ```shell
+     $ cd apache-apisix-2.0
+     $ make deps
+     ```
+   - check version of APISIX:
+     ```shell
+     $ ./bin/apisix version
+     ```
+   - start APISIX:
+     ```shell
+     $ ./bin/apisix start
+     ```
 2. [Docker image](https://hub.docker.com/r/apache/apisix) (applicable to all systems)
 
-    By default, the latest Apache release package will be pulled:
+   By default, the latest Apache release package will be pulled:
 
-    ```shell
-    docker pull apache/apisix
-    ```
+   ```shell
+   $ docker pull apache/apisix
+   ```
 
-    The Docker image does not include `etcd`, you can refer to [docker compose example](https://github.com/apache/apisix-docker/tree/master/example) to start a test cluster.
+   The Docker image does not include `etcd`, you can refer to [docker compose example](https://github.com/apache/apisix-docker/tree/master/example) to start a test cluster.
 
 3. RPM package(only for CentOS 7)
-    - Installation runtime dependencies: OpenResty and etcd, refer to [install dependencies documentation](doc/install-dependencies.md#centos-7)
-    - install APISIX:
-    ```shell
-    sudo yum install -y https://github.com/apache/apisix/releases/download/2.0/apisix-2.0-0.el7.noarch.rpm
-    ```
-    - check version of APISIX:
-        ```shell
-        apisix version
-        ```
-    - start APISIX:
-        ```shell
-        apisix start
-        ```
+   - Installation runtime dependencies: OpenResty and etcd, refer to [install dependencies documentation](doc/install-dependencies.md#centos-7)
+   - install APISIX:
+   ```shell
+   $ sudo yum install -y https://github.com/apache/apisix/releases/download/2.0/apisix-2.0-0.el7.noarch.rpm
+   ```
+   - check version of APISIX:
+     ```shell
+     $ apisix version
+     ```
+   - start APISIX:
+     ```shell
+     $ apisix start
+     ```
 
 **Note**: Apache APISIX would not support the v2 protocol of etcd anymore since APISIX v2.0, and the minimum etcd version supported is v3.4.0. Please update etcd when needed. If you need to migrate your data from etcd v2 to v3, please follow [etcd migration guide](https://etcd.io/docs/v3.4.0/op-guide/v2-migration/).
 
-## For Developer
+### For Developer
 
 1. For developers, you can use the latest master branch to experience more features
 
-    - build from source code
-    ```shell
-    git clone git@github.com:apache/apisix.git
-    cd apisix
-    make deps
-    ```
+   - build from source code
+
+   ```shell
+   $ git clone git@github.com:apache/apisix.git
+   $ cd apisix
+   $ make deps
+   ```
 
    - Docker image
-    ```shell
-    git clone https://github.com/apache/apisix-docker.git
-    cd apisix-docker
-    sudo docker build -f alpine-dev/Dockerfile .
-    ```
 
+   ```shell
+   $ git clone https://github.com/apache/apisix-docker.git
+   $ cd apisix-docker
+   $ sudo docker build -f alpine-dev/Dockerfile .
+   ```
 
 2. Getting start
 
-    The getting started guide is a great way to learn the basics of APISIX, just follow the steps in [Getting Started](doc/getting-started.md).
+   The getting started guide is a great way to learn the basics of APISIX, just follow the steps in [Getting Started](doc/getting-started.md).
 
-     Further, you can follow the documentation to try more [plugins](doc/README.md#Plugins).
+   Further, you can follow the documentation to try more [plugins](doc/README.md#Plugins).
 
 3. Admin API
 
-    Apache APISIX provides [REST Admin API](doc/admin-api.md) to dynamic control the Apache APISIX cluster.
+   Apache APISIX provides [REST Admin API](doc/admin-api.md) to dynamic control the Apache APISIX cluster.
 
 4. Plugin development
 
-    You can refer to [plugin development guide](doc/plugin-develop.md), and [sample plugin `echo`](doc/plugins/echo.md) documentation and code implementation.
+   You can refer to [plugin development guide](doc/plugin-develop.md), and [sample plugin `echo`](doc/plugins/echo.md) documentation and code implementation.
 
-     Please note that Apache APISIX plugins' added, updated, deleted, etc. are hot loaded, without restarting the service.
+   Please note that Apache APISIX plugins' added, updated, deleted, etc. are hot loaded, without restarting the service.
 
 For more documents, please refer to [Apache APISIX Document Index](doc/README.md)
 
 ## Dashboard
+
 APISIX has built-in support for [Dashboard](https://github.com/apache/apisix-dashboard), which could be directly deployed by docker compose.
 
 The dashboard only allows 127.0.0.1 by default, and you can modify `allow_admin` in `conf/config.yaml` by yourself, to list the list of IPs allowed to access.
@@ -220,59 +260,71 @@ Using AWS's 8 core server, APISIX's QPS reach to 140,000 with a latency of only
 
 [benckmark script](benchmark/run.sh), [test method and process](https://gist.github.com/membphis/137db97a4bf64d3653aa42f3e016bd01) has been open source, welcome to try and contribute.
 
-## Document
-[Document Indexing for Apache APISIX](doc/README.md)
-
 ## Apache APISIX vs Kong
 
 #### Both of them have been covered core features of API gateway
 
-| **Features**   | **Apache APISIX**   | **KONG**   |
-|:----|:----|:----|
-| **Dynamic upstream**  | Yes   | Yes   |
-| **Dynamic router**  | Yes   | Yes   |
-| **Health check**  | Yes   | Yes   |
-| **Dynamic SSL**  | Yes   | Yes   |
-| **L4 and L7 proxy**  | Yes   | Yes   |
-| **Opentracing**  | Yes   | Yes   |
-| **Custom plugin**  | Yes   | Yes   |
-| **REST API**  | Yes   | Yes   |
-| **CLI**  | Yes   | Yes   |
+| **Features**         | **Apache APISIX** | **KONG** |
+| :------------------- | :---------------- | :------- |
+| **Dynamic upstream** | Yes               | Yes      |
+| **Dynamic router**   | Yes               | Yes      |
+| **Health check**     | Yes               | Yes      |
+| **Dynamic SSL**      | Yes               | Yes      |
+| **L4 and L7 proxy**  | Yes               | Yes      |
+| **Opentracing**      | Yes               | Yes      |
+| **Custom plugin**    | Yes               | Yes      |
+| **REST API**         | Yes               | Yes      |
+| **CLI**              | Yes               | Yes      |
 
 #### The advantages of Apache APISIX
 
-| **Features**   | **Apache APISIX**   | **Kong**   |
-|:----|:----|:----|
-| Belongs to   | Apache Software Foundation   | Kong Inc.   |
-| Tech Architecture | Nginx + etcd   | Nginx + postgres   |
-| Communication channels  | Mail list, Wechat group, QQ group, Github, meetup   | Github, freenode, forum |
-| Single-core CPU, QPS(enable limit-count and prometheus plugins)   | 18000   | 1700   |
-|  Latency | 0.2 ms   | 2 ms   |
-| Dubbo   | Yes   | No   |
-| Configuration rollback   | Yes   | No   |
-| Route with TTL   | Yes   | No   |
-| Plug-in hot loading   | Yes   | No   |
-| Custom LB and route   | Yes   | No   |
-| REST API <--> gRPC transcoding   | Yes   | No   |
-| Tengine   | Yes   | No   |
-| MQTT    | Yes   | No   |
-| Configuration effective time   | Event driven, < 1ms   | polling, 5 seconds   |
-| Dashboard   | Yes   | No   |
-| IdP   | Yes   | No   |
-| Configuration Center HA   | Yes   | No   |
-| Speed limit for a specified time window   | Yes   | No   |
-| Support any Nginx variable as routing condition  | Yes   | No   |
+| **Features**                                                    | **Apache APISIX**                                 | **Kong**                |
+| :-------------------------------------------------------------- | :------------------------------------------------ | :---------------------- |
+| Belongs to                                                      | Apache Software Foundation                        | Kong Inc.               |
+| Tech Architecture                                               | Nginx + etcd                                      | Nginx + postgres        |
+| Communication channels                                          | Mail list, Wechat group, QQ group, Github, meetup | Github, freenode, forum |
+| Single-core CPU, QPS(enable limit-count and prometheus plugins) | 18000                                             | 1700                    |
+| Latency                                                         | 0.2 ms                                            | 2 ms                    |
+| Dubbo                                                           | Yes                                               | No                      |
+| Configuration rollback                                          | Yes                                               | No                      |
+| Route with TTL                                                  | Yes                                               | No                      |
+| Plug-in hot loading                                             | Yes                                               | No                      |
+| Custom LB and route                                             | Yes                                               | No                      |
+| REST API <--> gRPC transcoding                                  | Yes                                               | No                      |
+| Tengine                                                         | Yes                                               | No                      |
+| MQTT                                                            | Yes                                               | No                      |
+| Configuration effective time                                    | Event driven, < 1ms                               | polling, 5 seconds      |
+| Dashboard                                                       | Yes                                               | No                      |
+| IdP                                                             | Yes                                               | No                      |
+| Configuration Center HA                                         | Yes                                               | No                      |
+| Speed limit for a specified time window                         | Yes                                               | No                      |
+| Support any Nginx variable as routing condition                 | Yes                                               | No                      |
 
 Benchmark comparison test [details data](https://gist.github.com/membphis/137db97a4bf64d3653aa42f3e016bd01)
 
-## Milestones
-- [2.1](https://github.com/apache/apisix/milestone/8)
+## Open Governance
+
+[GitHub milestones](https://github.com/apache/apisix/milestones) lay out the path to Apache APISIX's future improvements.
+
+## Community
+
+- Mailing List: Mail to dev-subscribe@apisix.apache.org, follow the reply to subscribe the mailing list.
+- QQ Group - 578997126, 552030619
+- [Slack Workspace](http://s.apache.org/slack-invite) - join `#apisix` on our Slack to meet the team and ask questions
+- ![Twitter Follow](https://img.shields.io/twitter/follow/ApacheAPISIX?style=social) - follow and interact with us using hashtag `#ApacheAPISIX`
+- [bilibili video](https://space.bilibili.com/551921247)
+
+### Contributor Over Time
+
+![contributor-over-time](./doc/images/contributor-over-time.png)
 
 ## Videos And Articles
+
 - [APISIX technology selection, testing and continuous integration](https://medium.com/@ming_wen/apache-apisixs-technology-selection-testing-and-continuous-integration-313221b02542)
 - [Analysis of Excellent Performance of Apache APISIX Microservices Gateway](https://medium.com/@ming_wen/analysis-of-excellent-performance-of-apache-apisix-microservices-gateway-fc77db4090b5)
 
 ## User Stories
+
 - [European Factory Platform: API Security Gateway – Using APISIX in the eFactory Platform](https://www.efactory-project.eu/post/api-security-gateway-using-apisix-in-the-efactory-platform)
 - [ke.com: How to Build a Gateway Based on Apache APISIX(Chinese)](https://mp.weixin.qq.com/s/yZl9MWPyF1-gOyCp8plflA)
 - [360: Apache APISIX Practice in OPS Platform(Chinese)](https://mp.weixin.qq.com/s/zHF_vlMaPOSoiNvqw60tVw)
@@ -281,17 +333,15 @@ Benchmark comparison test [details data](https://gist.github.com/membphis/137db9
 - [aispeech: Why we create a new k8s ingress controller?(Chinese)](https://mp.weixin.qq.com/s/bmm2ibk2V7-XYneLo9XAPQ)
 
 ## Who Uses APISIX?
+
 A wide variety of companies and organizations use APISIX for research, production and commercial product, including:
 
 <img src="https://raw.githubusercontent.com/api7/website-of-API7/master/user-wall.jpg" width="900" height="500">
 
 Users are encouraged to add themselves to the [Powered By](doc/powered-by.md) page.
 
-## Contributor Over Time
-
-![contributor-over-time](./doc/images/contributor-over-time.png)
-
 ## Landscape
+
 <p align="left">
 <img src="https://landscape.cncf.io/images/left-logo.svg" width="150">&nbsp;&nbsp;<img src="https://landscape.cncf.io/images/right-logo.svg" width="200">
 <br/><br/>
@@ -306,8 +356,14 @@ CNCF API Gateway Landscape.</a>
 
 ## Contributing
 
-See [CONTRIBUTING](CONTRIBUTING.md) for details on submitting patches and the contribution workflow.
+We welcome all kinds of contributions from the open-source community, individuals and partners.
+
+- [Contributing Guide](CONTRIBUTING.md)
 
 ## Acknowledgments
 
 Inspired by Kong and Orange.
+
+## License
+
+[Apache 2.0 License](LICENSE)
diff --git a/README_CN.md b/README_CN.md
index ee32bd9..71d1dee 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -17,20 +17,25 @@
 #
 -->
 
-- [English](README.md)
-
-## APISIX
+# Apache APISIX
 
 [![Build Status](https://travis-ci.org/apache/apisix.svg?branch=master)](https://travis-ci.org/apache/apisix)
 [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/apache/apisix/blob/master/LICENSE)
 
-- 邮件列表: 发邮件到 dev-subscribe@apisix.apache.org, 然后跟着回复邮件操作即可。
-- **QQ 交流群**: 578997126(推荐), 552030619
-- 加入 [Apache Slack](http://s.apache.org/slack-invite) 的 `apisix` 频道。 如果前面的链接失效,请在这里获取最新的邀请地址 [Apache INFRA WIKI](https://cwiki.apache.org/confluence/display/INFRA/Slack+Guest+Invites)
-- ![Twitter Follow](https://img.shields.io/twitter/follow/ApacheAPISIX?style=social)
-- [bilibili B站 视频](https://space.bilibili.com/551921247)
+<p align="center">
+  <a href="https://github.com/apache/apisix">English</a> •
+  <a href="https://github.com/apache/apisix/blob/master/README_CN.md">中文</a>
+</p>
+
+<p align="center">
+  <a href="https://apisix.apache.org/">官方网站</a> •
+  <a href="https://github.com/apache/apisix/tree/master/doc">文档</a> •
+  <a href="https://github.com/apache/apisix-dashboard">Dashboard</a> •
+  <a href="https://twitter.com/apacheapisix">Twitter</a>
+</p>
 
 ## Apache APISIX 是什么?
+
 Apache APISIX 是一个动态、实时、高性能的 API 网关,基于 Nginx 网络库和 etcd 实现,
 提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。
 
@@ -41,169 +46,203 @@ Apache APISIX 的技术架构如下图所示:
 
 ![](doc/images/apisix.png)
 
+## 目录
+
+- [特性](#特性)
+- [文档](#文档)
+- [立刻开始](#立刻开始)
+- [控制台](#控制台)
+- [性能测试](#性能测试)
+- [Apache APISIX 和 Kong 的比较](#apache-apisix-和-kong-的比较)
+- [开放治理](#开放治理)
+- [社区](#社区)
+- [视频和文章](#视频和文章)
+- [用户实际使用案例](#用户实际使用案例)
+- [APISIX 的用户有哪些?](#apisix-的用户有哪些)
+- [全景图](#全景图)
+- [Logo](#logo)
+- [贡献](#贡献)
+- [致谢](#致谢)
+- [协议](#协议)
+
+## 特性
 
-## 功能
 你可以把 Apache APISIX 当做流量入口,来处理所有的业务数据,包括动态路由、动态上游、动态证书、
 A/B 测试、金丝雀发布(灰度发布)、蓝绿部署、限流限速、抵御恶意攻击、监控报警、服务可观测性、服务治理等。
 
 - **全平台**
-    - 云原生: 平台无关,没有供应商锁定,无论裸机还是 Kubernetes,APISIX 都可以运行。
-    - 运行环境: OpenResty 和 Tengine 都支持。
-    - 支持 ARM64: 不用担心底层技术的锁定。
+
+  - 云原生: 平台无关,没有供应商锁定,无论裸机还是 Kubernetes,APISIX 都可以运行。
+  - 运行环境: OpenResty 和 Tengine 都支持。
+  - 支持 ARM64: 不用担心底层技术的锁定。
 
 - **多协议**
-    - [TCP/UDP 代理](doc/zh-cn/stream-proxy.md): 动态 TCP/UDP 代理。
-    - [动态 MQTT 代理](doc/zh-cn/plugins/mqtt-proxy.md): 支持用 `client_id` 对 MQTT 进行负载均衡,同时支持 MQTT [3.1.*](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html) 和 [5.0](https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html) 两个协议标准。
-    - [gRPC 代理](doc/zh-cn/grpc-proxy.md):通过 APISIX 代理 gRPC 连接,并使用 APISIX 的大部分特性管理你的 gRPC 服务。
-    - [gRPC 协议转换](doc/zh-cn/plugins/grpc-transcode.md):支持协议的转换,这样客户端可以通过 HTTP/JSON 来访问你的 gRPC API。
-    - Websocket 代理
-    - Proxy Protocol
-    - Dubbo 代理:基于 Tengine,可以实现 Dubbo 请求的代理。
-    - HTTP(S) 反向代理
-    - [SSL](doc/zh-cn/https.md):动态加载 SSL 证书。
+
+  - [TCP/UDP 代理](doc/zh-cn/stream-proxy.md): 动态 TCP/UDP 代理。
+  - [动态 MQTT 代理](doc/zh-cn/plugins/mqtt-proxy.md): 支持用 `client_id` 对 MQTT 进行负载均衡,同时支持 MQTT [3.1.\*](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html) 和 [5.0](https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html) 两个协议标准。
+  - [gRPC 代理](doc/zh-cn/grpc-proxy.md):通过 APISIX 代理 gRPC 连接,并使用 APISIX 的大部分特性管理你的 gRPC 服务。
+  - [gRPC 协议转换](doc/zh-cn/plugins/grpc-transcode.md):支持协议的转换,这样客户端可以通过 HTTP/JSON 来访问你的 gRPC API。
+  - Websocket 代理
+  - Proxy Protocol
+  - Dubbo 代理:基于 Tengine,可以实现 Dubbo 请求的代理。
+  - HTTP(S) 反向代理
+  - [SSL](doc/zh-cn/https.md):动态加载 SSL 证书。
 
 - **全动态能力**
-    - [热更新和热插件](doc/zh-cn/plugins.md): 无需重启服务,就可以持续更新配置和插件。
-    - [代理请求重写](doc/zh-cn/plugins/proxy-rewrite.md): 支持重写请求上游的`host`、`uri`、`schema`、`enable_websocket`、`headers`信息。
-    - [输出内容重写](doc/zh-cn/plugins/response-rewrite.md): 支持自定义修改返回内容的 `status code`、`body`、`headers`。
-    - [Serverless](doc/zh-cn/plugins/serverless.md): 在 APISIX 的每一个阶段,你都可以添加并调用自己编写的函数。
-    - 动态负载均衡:动态支持有权重的 round-robin 负载平衡。
-    - 支持一致性 hash 的负载均衡:动态支持一致性 hash 的负载均衡。
-    - [健康检查](doc/zh-cn/health-check.md):启用上游节点的健康检查,将在负载均衡期间自动过滤不健康的节点,以确保系统稳定性。
-    - 熔断器: 智能跟踪不健康上游服务。
-    - [代理镜像](doc/zh-cn/plugins/proxy-mirror.md): 提供镜像客户端请求的能力。
+
+  - [热更新和热插件](doc/zh-cn/plugins.md): 无需重启服务,就可以持续更新配置和插件。
+  - [代理请求重写](doc/zh-cn/plugins/proxy-rewrite.md): 支持重写请求上游的`host`、`uri`、`schema`、`enable_websocket`、`headers`信息。
+  - [输出内容重写](doc/zh-cn/plugins/response-rewrite.md): 支持自定义修改返回内容的 `status code`、`body`、`headers`。
+  - [Serverless](doc/zh-cn/plugins/serverless.md): 在 APISIX 的每一个阶段,你都可以添加并调用自己编写的函数。
+  - 动态负载均衡:动态支持有权重的 round-robin 负载平衡。
+  - 支持一致性 hash 的负载均衡:动态支持一致性 hash 的负载均衡。
+  - [健康检查](doc/zh-cn/health-check.md):启用上游节点的健康检查,将在负载均衡期间自动过滤不健康的节点,以确保系统稳定性。
+  - 熔断器: 智能跟踪不健康上游服务。
+  - [代理镜像](doc/zh-cn/plugins/proxy-mirror.md): 提供镜像客户端请求的能力。
 
 - **精细化路由**
-    - [支持全路径匹配和前缀匹配](doc/router-radixtree.md#how-to-use-libradixtree-in-apisix)
-    - [支持使用 Nginx 所有内置变量做为路由的条件](/doc/router-radixtree.md#how-to-filter-route-by-nginx-builtin-variable),所以你可以使用 `cookie`, `args` 等做为路由的条件,来实现灰度发布、A/B 测试等功能
-    - 支持[各类操作符做为路由的判断条件](https://github.com/iresty/lua-resty-radixtree#operator-list),比如 `{"arg_age", ">", 24}`
-    - 支持[自定义路由匹配函数](https://github.com/iresty/lua-resty-radixtree/blob/master/t/filter-fun.t#L10)
-    - IPv6:支持使用 IPv6 格式匹配路由
-    - 支持路由的[自动过期(TTL)](doc/zh-cn/admin-api.md#route)
-    - [支持路由的优先级](doc/router-radixtree.md#3-match-priority)
-    - [支持批量 Http 请求](doc/zh-cn/plugins/batch-requests.md)
+
+  - [支持全路径匹配和前缀匹配](doc/router-radixtree.md#how-to-use-libradixtree-in-apisix)
+  - [支持使用 Nginx 所有内置变量做为路由的条件](/doc/router-radixtree.md#how-to-filter-route-by-nginx-builtin-variable),所以你可以使用 `cookie`, `args` 等做为路由的条件,来实现灰度发布、A/B 测试等功能
+  - 支持[各类操作符做为路由的判断条件](https://github.com/iresty/lua-resty-radixtree#operator-list),比如 `{"arg_age", ">", 24}`
+  - 支持[自定义路由匹配函数](https://github.com/iresty/lua-resty-radixtree/blob/master/t/filter-fun.t#L10)
+  - IPv6:支持使用 IPv6 格式匹配路由
+  - 支持路由的[自动过期(TTL)](doc/zh-cn/admin-api.md#route)
+  - [支持路由的优先级](doc/router-radixtree.md#3-match-priority)
+  - [支持批量 Http 请求](doc/zh-cn/plugins/batch-requests.md)
 
 - **安全防护**
-    - 多种身份认证方式: [key-auth](doc/zh-cn/plugins/key-auth.md), [JWT](doc/zh-cn/plugins/jwt-auth.md), [basic-auth](doc/zh-cn/plugins/basic-auth.md), [wolf-rbac](doc/zh-cn/plugins/wolf-rbac.md)。
-    - [IP 黑白名单](doc/zh-cn/plugins/ip-restriction.md)
-    - [Referer 白名单](doc/zh-cn/plugins/referer-restriction.md)
-    - [IdP 支持](doc/plugins/openid-connect.md): 支持外部的身份认证服务,比如 Auth0,Okta,Authing 等,用户可以借此来对接 Oauth2.0 等认证方式。
-    - [限制速率](doc/zh-cn/plugins/limit-req.md)
-    - [限制请求数](doc/zh-cn/plugins/limit-count.md)
-    - [限制并发](doc/zh-cn/plugins/limit-conn.md)
-    - 防御 ReDoS(正则表达式拒绝服务):内置策略,无需配置即可抵御 ReDoS。
-    - [CORS](doc/zh-cn/plugins/cors.md):为你的API启用 CORS。
-    - [URI拦截器](doc/zh-cn/plugins/uri-blocker.md):根据 URI 拦截用户请求。
-    - [请求验证器](doc/zh-cn/plugins/request-validation.md)。
+
+  - 多种身份认证方式: [key-auth](doc/zh-cn/plugins/key-auth.md), [JWT](doc/zh-cn/plugins/jwt-auth.md), [basic-auth](doc/zh-cn/plugins/basic-auth.md), [wolf-rbac](doc/zh-cn/plugins/wolf-rbac.md)。
+  - [IP 黑白名单](doc/zh-cn/plugins/ip-restriction.md)
+  - [Referer 白名单](doc/zh-cn/plugins/referer-restriction.md)
+  - [IdP 支持](doc/plugins/openid-connect.md): 支持外部的身份认证服务,比如 Auth0,Okta,Authing 等,用户可以借此来对接 Oauth2.0 等认证方式。
+  - [限制速率](doc/zh-cn/plugins/limit-req.md)
+  - [限制请求数](doc/zh-cn/plugins/limit-count.md)
+  - [限制并发](doc/zh-cn/plugins/limit-conn.md)
+  - 防御 ReDoS(正则表达式拒绝服务):内置策略,无需配置即可抵御 ReDoS。
+  - [CORS](doc/zh-cn/plugins/cors.md):为你的 API 启用 CORS。
+  - [URI 拦截器](doc/zh-cn/plugins/uri-blocker.md):根据 URI 拦截用户请求。
+  - [请求验证器](doc/zh-cn/plugins/request-validation.md)。
 
 - **运维友好**
-    - OpenTracing 可观测性: 支持 [Apache Skywalking](doc/zh-cn/plugins/skywalking.md) 和 [Zipkin](doc/zh-cn/plugins/zipkin.md)。
-    - 对接外部服务发现:除了内置的 etcd 外,还支持 `Consul` 和 `Nacos` 的 [DNS 发现模式](https://github.com/apache/apisix/issues/1731#issuecomment-646392129),以及 [Eureka](doc/zh-cn/discovery.md)。
-    - 监控和指标: [Prometheus](doc/zh-cn/plugins/prometheus.md)
-    - 集群:APISIX 节点是无状态的,创建配置中心集群请参考 [etcd Clustering Guide](https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/clustering.md)。
-    - 高可用:支持配置同一个集群内的多个 etcd 地址。
-    - 控制台: 内置控制台来操作 APISIX 集群。
-    - 版本控制:支持操作的多次回滚。
-    - CLI: 使用命令行来启动、关闭和重启 APISIX。
-    - [单机模式](doc/zh-cn/stand-alone.md): 支持从本地配置文件中加载路由规则,在 kubernetes(k8s) 等环境下更友好。
-    - [全局规则](doc/zh-cn/architecture-design.md#Global-Rule):允许对所有请求执行插件,比如黑白名单、限流限速等。
-    - 高性能:在单核上 QPS 可以达到 18k,同时延迟只有 0.2 毫秒。
-    - [故障注入](doc/zh-cn/plugins/fault-injection.md)
-    - [REST Admin API](doc/zh-cn/admin-api.md): 使用 REST Admin API 来控制 Apache APISIX,默认只允许 127.0.0.1 访问,你可以修改 `conf/config.yaml` 中的 `allow_admin` 字段,指定允许调用 Admin API 的 IP 列表。同时需要注意的是,Admin API 使用 key auth 来校验调用者身份,**在部署前需要修改 `conf/config.yaml` 中的 `admin_key` 字段,来保证安全。**
-    - 外部日志记录器:将访问日志导出到外部日志管理工具。([HTTP Logger](doc/plugins/http-logger.md), [TCP Logger](doc/plugins/tcp-logger.md), [Kafka Logger](doc/plugins/kafka-logger.md), [UDP Logger](doc/plugins/udp-logger.md))
+
+  - OpenTracing 可观测性: 支持 [Apache Skywalking](doc/zh-cn/plugins/skywalking.md) 和 [Zipkin](doc/zh-cn/plugins/zipkin.md)。
+  - 对接外部服务发现:除了内置的 etcd 外,还支持 `Consul` 和 `Nacos` 的 [DNS 发现模式](https://github.com/apache/apisix/issues/1731#issuecomment-646392129),以及 [Eureka](doc/zh-cn/discovery.md)。
+  - 监控和指标: [Prometheus](doc/zh-cn/plugins/prometheus.md)
+  - 集群:APISIX 节点是无状态的,创建配置中心集群请参考 [etcd Clustering Guide](https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/clustering.md)。
+  - 高可用:支持配置同一个集群内的多个 etcd 地址。
+  - 控制台: 内置控制台来操作 APISIX 集群。
+  - 版本控制:支持操作的多次回滚。
+  - CLI: 使用命令行来启动、关闭和重启 APISIX。
+  - [单机模式](doc/zh-cn/stand-alone.md): 支持从本地配置文件中加载路由规则,在 kubernetes(k8s) 等环境下更友好。
+  - [全局规则](doc/zh-cn/architecture-design.md#Global-Rule):允许对所有请求执行插件,比如黑白名单、限流限速等。
+  - 高性能:在单核上 QPS 可以达到 18k,同时延迟只有 0.2 毫秒。
+  - [故障注入](doc/zh-cn/plugins/fault-injection.md)
+  - [REST Admin API](doc/zh-cn/admin-api.md): 使用 REST Admin API 来控制 Apache APISIX,默认只允许 127.0.0.1 访问,你可以修改 `conf/config.yaml` 中的 `allow_admin` 字段,指定允许调用 Admin API 的 IP 列表。同时需要注意的是,Admin API 使用 key auth 来校验调用者身份,**在部署前需要修改 `conf/config.yaml` 中的 `admin_key` 字段,来保证安全。**
+  - 外部日志记录器:将访问日志导出到外部日志管理工具。([HTTP Logger](doc/plugins/http-logger.md), [TCP Logger](doc/plugins/tcp-logger.md), [Kafka Logger](doc/plugins/kafka-logger.md), [UDP Logger](doc/plugins/udp-logger.md))
 
 - **高度可扩展**
-    - [自定义插件](doc/zh-cn/plugin-develop.md): 允许挂载常见阶段,例如`init`, `rewrite`,`access`,`balancer`,`header filer`,`body filter` 和 `log` 阶段。
-    - 自定义负载均衡算法:可以在 `balancer` 阶段使用自定义负载均衡算法。
-    - 自定义路由: 支持用户自己实现路由算法。
+  - [自定义插件](doc/zh-cn/plugin-develop.md): 允许挂载常见阶段,例如`init`, `rewrite`,`access`,`balancer`,`header filer`,`body filter` 和 `log` 阶段。
+  - 自定义负载均衡算法:可以在 `balancer` 阶段使用自定义负载均衡算法。
+  - 自定义路由: 支持用户自己实现路由算法。
+
+## 文档
+
+[Apache APISIX 文档索引](doc/README.md)
+
+## 立刻开始
 
-## 编译和安装
+### 编译和安装
 
 APISIX 在以下操作系统中可顺利安装并做过测试:
 
 CentOS 7, Ubuntu 16.04, Ubuntu 18.04, Debian 9, Debian 10, macOS, **ARM64** Ubuntu 18.04
 
 有以下几种方式来安装 APISIX 的 Apache Release 版本:
+
 1. 源码编译(适用所有系统)
-    - 安装运行时依赖:OpenResty 和 etcd,以及编译的依赖:luarocks。参考[依赖安装文档](doc/zh-cn/install-dependencies.md)
-    - 下载最新的源码发布包:
-        ```shell
-        wget http://www.apache.org/dist/apisix/2.0/apache-apisix-2.0-src.tgz
-        tar zxvf apache-apisix-2.0-src.tgz
-        ```
-    - 安装运行时依赖的 Lua 库:
-        ```shell
-        cd apache-apisix-2.0
-        make deps
-        ```
-    - 检查 APISIX 的版本号:
-        ```shell
-        ./bin/apisix version
-        ```
-    - 启动 APISIX:
-        ```shell
-        ./bin/apisix start
-        ```
+   - 安装运行时依赖:OpenResty 和 etcd,以及编译的依赖:luarocks。参考[依赖安装文档](doc/zh-cn/install-dependencies.md)
+   - 下载最新的源码发布包:
+     ```shell
+     $ wget http://www.apache.org/dist/apisix/2.0/apache-apisix-2.0-src.tgz
+     $ tar zxvf apache-apisix-2.0-src.tgz
+     ```
+   - 安装运行时依赖的 Lua 库:
+     ```shell
+     $ cd apache-apisix-2.0
+     $ make deps
+     ```
+   - 检查 APISIX 的版本号:
+     ```shell
+     $ ./bin/apisix version
+     ```
+   - 启动 APISIX:
+     ```shell
+     $ ./bin/apisix start
+     ```
 2. [Docker 镜像](https://hub.docker.com/r/apache/apisix)(适用所有系统)
 
-    默认会拉取最新的 Apache 发布包:
+   默认会拉取最新的 Apache 发布包:
 
-    ```shell
-    docker pull apache/apisix
-    ```
+   ```shell
+   $ docker pull apache/apisix
+   ```
 
-    Docker 镜像中并不包含 etcd,你可以参考 [docker compose 的示例](https://github.com/apache/apisix-docker/tree/master/example)来启动一个测试集群。
+   Docker 镜像中并不包含 etcd,你可以参考 [docker compose 的示例](https://github.com/apache/apisix-docker/tree/master/example)来启动一个测试集群。
 
 3. RPM 包(只适用于 CentOS 7)
-    - 安装依赖:OpenResty 和 etcd,参考[依赖安装文档](doc/zh-cn/install-dependencies.md#centos-7)
-    - 安装 APISIX:
-    ```shell
-    sudo yum install -y https://github.com/apache/apisix/releases/download/2.0/apisix-2.0-0.el7.noarch.rpm
-    ```
-    - 检查 APISIX 的版本号:
-        ```shell
-        apisix version
-        ```
-    - 启动 APISIX:
-        ```shell
-        apisix start
-        ```
+   - 安装依赖:OpenResty 和 etcd,参考[依赖安装文档](doc/zh-cn/install-dependencies.md#centos-7)
+   - 安装 APISIX:
+   ```shell
+   $ sudo yum install -y https://github.com/apache/apisix/releases/download/2.0/apisix-2.0-0.el7.noarch.rpm
+   ```
+   - 检查 APISIX 的版本号:
+     ```shell
+     $ apisix version
+     ```
+   - 启动 APISIX:
+     ```shell
+     $ apisix start
+     ```
 
 **注意**:Apache APISIX 从 v2.0 开始不再支持 etcd v2 协议,并且 etcd 最低支持版本为 v3.4.0,如果有需要请进行升级。如果需要将数据迁移至 etcd v3,请按照 [etcd 迁移指南](https://etcd.io/docs/v3.4.0/op-guide/v2-migration/) 进行迁移。
 
-## 针对开发者
+### 针对开发者
 
 1. 对于开发者而言,可以使用最新的 master 分支来体验更多功能
 
-    - 源码编译
-    ```shell
-    git clone git@github.com:apache/apisix.git
-    cd apisix
-    make deps
-    ```
+   - 源码编译
+
+   ```shell
+   $ git clone git@github.com:apache/apisix.git
+   $ cd apisix
+   $ make deps
+   ```
 
    - Docker 镜像
-    ```shell
-    git clone https://github.com/apache/apisix-docker.git
-    cd apisix-docker
-    sudo docker build -f alpine-dev/Dockerfile .
-    ```
+
+   ```shell
+   $ git clone https://github.com/apache/apisix-docker.git
+   $ cd apisix-docker
+   $ sudo docker build -f alpine-dev/Dockerfile .
+   ```
 
 2. 入门指南
 
-    入门指南是学习 APISIX 基础知识的好方法。按照 [入门指南](doc/zh-cn/getting-started.md)的步骤即可。
+   入门指南是学习 APISIX 基础知识的好方法。按照 [入门指南](doc/zh-cn/getting-started.md)的步骤即可。
 
-    更进一步,你可以跟着文档来尝试更多的[插件](doc/zh-cn/README.md#插件)。
+   更进一步,你可以跟着文档来尝试更多的[插件](doc/zh-cn/README.md#插件)。
 
 3. Admin API
 
-    Apache APISIX 提供了 [REST Admin API](doc/zh-cn/admin-api.md),方便动态控制 Apache APISIX 集群。
+   Apache APISIX 提供了 [REST Admin API](doc/zh-cn/admin-api.md),方便动态控制 Apache APISIX 集群。
 
 4. 插件二次开发
 
-    可以参考[插件开发指南](doc/zh-cn/plugin-develop.md),以及[示例插件 echo](doc/zh-cn/plugins/echo.md) 的文档和代码实现。
+   可以参考[插件开发指南](doc/zh-cn/plugin-develop.md),以及[示例插件 echo](doc/zh-cn/plugins/echo.md) 的文档和代码实现。
 
-    请注意,Apache APISIX 的插件新增、更新、删除等都是热加载的,不用重启服务。
+   请注意,Apache APISIX 的插件新增、更新、删除等都是热加载的,不用重启服务。
 
 更多文档请参考 [Apache APISIX 文档索引](doc/zh-cn/README.md)。
 
@@ -220,63 +259,77 @@ Dashboard 默认只允许 127.0.0.1 访问。你可以自行修改 `conf/config.
 
 [性能测试脚本](benchmark/run.sh),以及[测试方法和过程](https://gist.github.com/membphis/137db97a4bf64d3653aa42f3e016bd01)已经开源,欢迎补充。
 
-
 ## Apache APISIX 和 Kong 的比较
 
 #### API 网关核心功能点,两者均已覆盖
 
-| **功能**   | **Apache APISIX**   | **KONG**   |
-|:----|:----|:----|
-| **动态上游**  | 支持   | 支持   |
-| **动态路由**  | 支持   | 支持   |
-| **健康检查和熔断器**  | 支持   | 支持   |
-| **动态SSL证书**  | 支持   | 支持   |
-| **七层和四层代理**  | 支持   | 支持   |
-| **分布式追踪**  | 支持   | 支持   |
-| **自定义插件**  | 支持   | 支持   |
-| **REST API**  | 支持   | 支持   |
-| **CLI**  | 支持   | 支持   |
+| **功能**             | **Apache APISIX** | **KONG** |
+| :------------------- | :---------------- | :------- |
+| **动态上游**         | 支持              | 支持     |
+| **动态路由**         | 支持              | 支持     |
+| **健康检查和熔断器** | 支持              | 支持     |
+| **动态 SSL 证书**    | 支持              | 支持     |
+| **七层和四层代理**   | 支持              | 支持     |
+| **分布式追踪**       | 支持              | 支持     |
+| **自定义插件**       | 支持              | 支持     |
+| **REST API**         | 支持              | 支持     |
+| **CLI**              | 支持              | 支持     |
 
 #### Apache APISIX 的优势
 
-| **功能**   | **Apache APISIX**   | **KONG**   |
-|:----|:----|:----|
-| 项目归属   | Apache 软件基金会   | Kong Inc.   |
-| 技术架构   | Nginx + etcd   | Nginx + postgres   |
-| 交流渠道  | 微信群、QQ群、邮件列表、Github、meetup   | Github、论坛、freenode   |
-| 单核 QPS (开启限流和prometheus插件)   | 18000   | 1700   |
-| 平均延迟  | 0.2 毫秒   | 2 毫秒   |
-| 支持 Dubbo 代理   | 是   | 否   |
-| 配置回滚   | 是   | 否   |
-| 支持生命周期的路由   | 是   | 否   |
-| 插件热更新   | 是   | 否   |
-| 用户自定义:负载均衡算法、路由   | 是   | 否   |
-| resty <--> gRPC 转码   | 是   | 否   |
-| 支持 Tengine 作为运行时   | 是   | 否   |
-| MQTT 协议支持   | 是   | 否   |
-| 配置生效时间   | 事件通知,低于1毫秒更新   | 定期轮询,5 秒   |
-| 自带控制台   | 是   | 否   |
-| 对接外部身份认证服务   | 是   | 否   |
-| 配置中心高可用(HA)   | 是   | 否   |
-| 指定时间窗口的限速   | 是   | 否   |
-| 支持任何 Nginx 变量做路由条件 | 是   | 否   |
+| **功能**                              | **Apache APISIX**                       | **KONG**               |
+| :------------------------------------ | :-------------------------------------- | :--------------------- |
+| 项目归属                              | Apache 软件基金会                       | Kong Inc.              |
+| 技术架构                              | Nginx + etcd                            | Nginx + postgres       |
+| 交流渠道                              | 微信群、QQ 群、邮件列表、Github、meetup | Github、论坛、freenode |
+| 单核 QPS (开启限流和 prometheus 插件) | 18000                                   | 1700                   |
+| 平均延迟                              | 0.2 毫秒                                | 2 毫秒                 |
+| 支持 Dubbo 代理                       | 是                                      | 否                     |
+| 配置回滚                              | 是                                      | 否                     |
+| 支持生命周期的路由                    | 是                                      | 否                     |
+| 插件热更新                            | 是                                      | 否                     |
+| 用户自定义:负载均衡算法、路由        | 是                                      | 否                     |
+| resty <--> gRPC 转码                  | 是                                      | 否                     |
+| 支持 Tengine 作为运行时               | 是                                      | 否                     |
+| MQTT 协议支持                         | 是                                      | 否                     |
+| 配置生效时间                          | 事件通知,低于 1 毫秒更新               | 定期轮询,5 秒         |
+| 自带控制台                            | 是                                      | 否                     |
+| 对接外部身份认证服务                  | 是                                      | 否                     |
+| 配置中心高可用(HA)                    | 是                                      | 否                     |
+| 指定时间窗口的限速                    | 是                                      | 否                     |
+| 支持任何 Nginx 变量做路由条件         | 是                                      | 否                     |
 
 性能对比测试[详细内容如下](https://gist.github.com/membphis/137db97a4bf64d3653aa42f3e016bd01)。
 
-## 开发计划
-- [2.1](https://github.com/apache/apisix/milestone/8)
+## 开放治理
+
+[GitHub 里程碑](https://github.com/apache/apisix/milestones) 布局了 Apache APISIX 未来的改进之路。
+
+## 社区
+
+- 邮件列表 - 发送任意内容到 dev-subscribe@apisix.apache.org 后,根据回复以订阅邮件列表。
+- QQ 群 - 578997126 或 552030619
+- [Slack](http://s.apache.org/slack-invite) - 加入 `#apisix` 频道以便与成员交流。
+- ![Twitter Follow](https://img.shields.io/twitter/follow/ApacheAPISIX?style=social) - 使用标签 `#ApacheAPISIX` 关注我们并与我们互动。
+- [哔哩哔哩](https://space.bilibili.com/551921247)
+
+### 贡献者变化
+
+![contributor-over-time](./doc/images/contributor-over-time.png)
 
 ## 视频和文章
+
 - 2020.1.17 [API 网关 Apache APISIX 和 Kong 的选型对比](https://mp.weixin.qq.com/s/c51apneVj0O9yxiZAHF34Q)
 - 2019.12.14 [从 0 到 1:Apache APISIX 的 Apache 之路](https://zhuanlan.zhihu.com/p/99620158)
 - 2019.12.14 [基于 Apache APISIX 的下一代微服务架构](https://www.upyun.com/opentalk/445.html)
 - 2019.10.30 [Apache APISIX 微服务架构极致性能架构解析](https://www.upyun.com/opentalk/440.html)
 - 2019.9.27 [想把 APISIX 运行在 ARM64 平台上?只要三步](https://zhuanlan.zhihu.com/p/84467919)
 - 2019.8.31 [APISIX 技术选型、测试和持续集成](https://www.upyun.com/opentalk/433.html)
-- 2019.8.31 [APISIX 高性能实战2](https://www.upyun.com/opentalk/437.html)
+- 2019.8.31 [APISIX 高性能实战 2](https://www.upyun.com/opentalk/437.html)
 - 2019.7.6 [APISIX 高性能实战](https://www.upyun.com/opentalk/429.html)
 
 ## 用户实际使用案例
+
 - [欧盟数字工厂平台: API Security Gateway – Using APISIX in the eFactory Platform](https://www.efactory-project.eu/post/api-security-gateway-using-apisix-in-the-efactory-platform)
 - [贝壳找房:如何基于 Apache APISIX 搭建网关](https://mp.weixin.qq.com/s/yZl9MWPyF1-gOyCp8plflA)
 - [360:Apache APISIX 在基础运维平台项目中的实践](https://mp.weixin.qq.com/s/zHF_vlMaPOSoiNvqw60tVw)
@@ -285,17 +338,15 @@ Dashboard 默认只允许 127.0.0.1 访问。你可以自行修改 `conf/config.
 - [思必驰:为什么我们重新写了一个 k8s ingress controller?](https://mp.weixin.qq.com/s/bmm2ibk2V7-XYneLo9XAPQ)
 
 ## APISIX 的用户有哪些?
+
 有很多公司和组织把 APISIX 用于学习、研究、生产环境和商业产品中,包括:
 
 <img src="https://raw.githubusercontent.com/api7/website-of-API7/master/user-wall.jpg" width="900" height="500">
 
 欢迎用户把自己加入到 [Powered By](doc/powered-by.md) 页面。
 
-## 贡献者变化
-
-![contributor-over-time](./doc/images/contributor-over-time.png)
-
 ## 全景图
+
 <p align="left">
 <img src="https://landscape.cncf.io/images/left-logo.svg" width="150">&nbsp;&nbsp;<img src="https://landscape.cncf.io/images/right-logo.svg" width="200">
 <br/><br/>
@@ -307,6 +358,16 @@ APISIX 被纳入 <a href="https://landscape.cncf.io/category=api-gateway&format=
 - [Apache APISIX logo(PNG)](logos/apache-apisix.png)
 - [Apache APISIX logo 源文件](https://apache.org/logos/#apisix)
 
+## 贡献
+
+我们欢迎来自开源社区、个人和合作伙伴的各种贡献。
+
+- [贡献指南](CONTRIBUTING.md)
+
 ## 致谢
 
 灵感来自 Kong 和 Orange。
+
+## 协议
+
+[Apache 2.0 License](LICENSE)