Skip to content

Commit

Permalink
Reorganized the documents structure (#405)
Browse files Browse the repository at this point in the history
* reorgnized the documents strcture

* simplify the documentation section in README.md

* fix the filters links

* correct the number of the section title

* forgot to update the chinese README.zh-CN.md

* fix the faas controller link

* Update doc/README.md

Co-authored-by: Samu Tamminen <[email protected]>

* Update doc/README.md

Co-authored-by: Samu Tamminen <[email protected]>

* Update doc/reference/controllers.md

Co-authored-by: Samu Tamminen <[email protected]>

* move all of images into `doc/imgs/` directory. rename the file name, change the `_` to `-`

* Update doc/README.md

Co-authored-by: Bomin Zhang <[email protected]>

* Update doc/README.md

Co-authored-by: Bomin Zhang <[email protected]>

* Update doc/README.md

Co-authored-by: Bomin Zhang <[email protected]>

* Update doc/README.md

Co-authored-by: Bomin Zhang <[email protected]>

* forgot fix the link in README.md after rename the file name

* refine the cluster document a bit

* add some badages in README.md

* fix the link of two badages

Co-authored-by: Samu Tamminen <[email protected]>
Co-authored-by: Bomin Zhang <[email protected]>
  • Loading branch information
3 people committed Dec 10, 2021
1 parent c49629e commit d04cc65
Show file tree
Hide file tree
Showing 28 changed files with 157 additions and 88 deletions.
31 changes: 17 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
# Easegress

[![Go Report Card](https://goreportcard.com/badge/github.com/megaease/easegress)](https://goreportcard.com/report/github.com/megaease/easegress) [![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/megaease/easegress/Test/main)](https://github.com/haoel/easegress/actions/workflows/test.yml) [![codecov](https://codecov.io/gh/megaease/easegress/branch/main/graph/badge.svg?token=5Q80B98LPI)](https://codecov.io/gh/megaease/easegress) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/megaease/easegress)](https://github.com/haoel/easegress/blob/main/go.mod) [![Join MegaEase Slack](https://img.shields.io/badge/slack-megaease-brightgreen?logo=slack)](https://join.slack.com/t/openmegaease/shared_invite/zt-upo7v306-lYPHvVwKnvwlqR0Zl2vveA)

<a href="https://megaease.com/easegress">
<img src="./doc/easegress.svg"
<img src="./doc/imgs/easegress.svg"
alt="Easegress logo" title="Easegress" height="175" width="175" align="right"/>
</a>

Expand Down Expand Up @@ -32,7 +34,7 @@

The architecture of Easegress:

![architecture](./doc/architecture.png)
![architecture](./doc/imgs/architecture.png)

## Features

Expand Down Expand Up @@ -100,24 +102,25 @@ The architecture of Easegress:

The following examples show how to use Easegress for different scenarios.

- [API Aggregator](./doc/cookbook/api_aggregator.md) - Aggregating many APIs into a single API.
- [Distributed Tracing](./doc/cookbook/distributed_tracing.md) - How to do APM tracing - Zipkin.
- [API Aggregator](./doc/cookbook/api-aggregator.md) - Aggregating many APIs into a single API.
- [Cluster Deployment](./doc/cookbook/multi-node-cluster.md) - How to deploy multiple Easegress cluster nodes.
- [Distributed Tracing](./doc/cookbook/distributed-tracing.md) - How to do APM tracing - Zipkin.
- [FaaS](./doc/cookbook/faas.md) - Supporting Knative FaaS integration
- [Flash Sale](./doc/cookbook/flash_sale.md) - How to do high concurrent promotion sales with Easegress
- [Kubernetes Ingress Controller](./doc/cookbook/k8s_ingress_controller.md) - How to integrate with Kubernetes as ingress controller
- [LoadBalancer](./doc/cookbook/load_balancer.md) - A number of the strategies of load balancing
- [MQTTProxy](./doc/cookbook/mqtt_proxy.md) - An Example to MQTT proxy with Kafka backend.
- [Flash Sale](./doc/cookbook/flash-sale.md) - How to do high concurrent promotion sales with Easegress
- [Kubernetes Ingress Controller](./doc/cookbook/k8s-ingress-controller.md) - How to integrate with Kubernetes as ingress controller
- [LoadBalancer](./doc/cookbook/load-balancer.md) - A number of the strategies of load balancing
- [MQTTProxy](./doc/cookbook/mqtt-proxy.md) - An Example to MQTT proxy with Kafka backend.
- [Performance](./doc/cookbook/performance.md) - Performance optimization - compression, caching etc.
- [Pipeline](./doc/cookbook/pipeline.md) - How to orchestrate HTTP filters for requests/responses handling
- [Resilience and Fault Tolerance](./doc/cookbook/resilience.md) - Circuit Breaker, Rate Limiter, Retryer, Time limiter, etc. (Porting from [Java resilience4j](https://github.com/resilience4j/resilience4j))
- [Security](./doc/cookbook/security.md) - How to do authentication by Header, JWT, HMAC, OAuth2, etc.
- [Service Proxy](./doc/cookbook/service_proxy.md) - Supporting the Microservice registries - Zookeeper, Eureka, Consul, Nacos, etc.
- [Service Proxy](./doc/cookbook/service-proxy.md) - Supporting the Microservice registries - Zookeeper, Eureka, Consul, Nacos, etc.
- [WebAssembly](./doc/cookbook/wasm.md) - Using AssemblyScript to extend the Easegress
- [WebSocket](./doc/cookbook/websocket.md) - WebSocket proxy for Easegress
- [Workflow](./doc/cookbook/workflow.md) - An Example to make a workflow for a number of APIs.
- [Cluster deployment](./doc/cookbook/multi_node_cluster.md) - How to deploy multiple Easegress cluster nodes.

For full list, see [Cookbook](./doc/cookbook/README.md).

For full list, see [Cookbook](./doc/README.md#1-cookbook--how-to-guide).

## Getting Started

Expand Down Expand Up @@ -182,7 +185,7 @@ $ egctl member list | grep "id"
id: 689e371e88f78b6a
```

After launched successfully, we could check the status of the one-node cluster. It shows the static options and dynamic status of heartbeat and etcd.
After launching successfully, we could check the status of the one-node cluster. It shows the static options and dynamic status of heartbeat and etcd.

### Create an HTTPServer and Pipeline

Expand Down Expand Up @@ -249,7 +252,7 @@ Body : Hello, Easegress
Now we want to add more features to the pipeline, then we could add kinds of filters to the pipeline. For example, we want validation and request adaptation for the `pipeline-demo`.
<p align="center">
<img src="./doc/pipeline-demo.png" width=240>
<img src="./doc/imgs/pipeline-demo.png" width=240>
</p>
```bash
Expand Down Expand Up @@ -302,7 +305,7 @@ We can also see Easegress send one more header `X-Adapt-Key: goodplan` to the mi
## Documentation
See [reference](./doc/reference.md) and [developer guide](./doc/developer-guide.md) for more information.
See [Easegress Documentation](./doc/README.md) for all documents.
## Roadmap
Expand Down
29 changes: 16 additions & 13 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
# Easegress

[![Go Report Card](https://goreportcard.com/badge/github.com/megaease/easegress)](https://goreportcard.com/report/github.com/megaease/easegress) [![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/megaease/easegress/Test/main)](https://github.com/haoel/easegress/actions/workflows/test.yml) [![codecov](https://codecov.io/gh/megaease/easegress/branch/main/graph/badge.svg?token=5Q80B98LPI)](https://codecov.io/gh/megaease/easegress) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/megaease/easegress)](https://github.com/haoel/easegress/blob/main/go.mod) [![Join MegaEase Slack](https://img.shields.io/badge/slack-megaease-brightgreen?logo=slack)](https://join.slack.com/t/openmegaease/shared_invite/zt-upo7v306-lYPHvVwKnvwlqR0Zl2vveA)

<a href="https://megaease.com/easegress">
<img src="./doc/easegress.svg"
<img src="./doc/imgs/easegress.svg"
alt="Easegress logo" title="Easegress" height="175" width="175" align="right"/>
</a>

Expand Down Expand Up @@ -32,7 +34,7 @@

下面是其架构图:

![架构](./doc/architecture.png)
![架构](./doc/imgs/architecture.png)

## 功能

Expand Down Expand Up @@ -100,24 +102,25 @@

下面的例子展示了如何在不同场景下使用 Easegress。

- [API 聚合](./doc/cookbook/api_aggregator.md) - 将多个 API 聚合为一个。
- [分布式调用链](./doc/cookbook/distributed_tracing.md) - 如何使用 Zipkin 进行 APM 追踪。
- [API 聚合](./doc/cookbook/api-aggregator.md) - 将多个 API 聚合为一个。
- [Easegress 集群化部署](./doc/cookbook/multi-node-cluster.md) - Easegress 如何进行集群化多点部署。
- [分布式调用链](./doc/cookbook/distributed-tracing.md) - 如何使用 Zipkin 进行 APM 追踪。
- [函数即服务 FaaS](./doc/cookbook/faas.md) - 支持 Knative FaaS 集成。
- [高并发秒杀](./doc/cookbook/flash_sale.md) - 如何使用 Easegress 进行高并发的秒杀活动。
- [Kubernetes入口控制器](./doc/cookbook/k8s_ingress_controller.md) - 如何作为入口控制器与 Kubernetes 集成。
- [负载均衡](./doc/cookbook/load_balancer.md) - 各种负载均衡策略。
- [MQTT代理](./doc/cookbook/mqtt_proxy.md) - 支持 Kafka 作为后端的 MQTT 代理
- [高并发秒杀](./doc/cookbook/flash-sale.md) - 如何使用 Easegress 进行高并发的秒杀活动。
- [Kubernetes入口控制器](./doc/cookbook/k8s-ingress-controller.md) - 如何作为入口控制器与 Kubernetes 集成。
- [负载均衡](./doc/cookbook/load-balancer.md) - 各种负载均衡策略。
- [MQTT代理](./doc/cookbook/mqtt-proxy.md) - 支持 Kafka 作为后端的 MQTT 代理
- [高性能](./doc/cookbook/performance.md) - 性能优化,压缩、缓存等。
- [管道编排](./doc/cookbook/pipeline.md) - 如何编排 HTTP 过滤器来处理请求和应答。
- [弹力和容错设计](./doc/cookbook/resilience.md) - 断路器、速率限制、重试、时间限制等(移植自[Java resilience4j](https://github.com/resilience4j/resilience4j)
- [安全](./doc/cookbook/security.md) - 如何通过标头、JWT、HMAC、OAuth2 等进行认证。
- [服务网关](./doc/cookbook/service_proxy.md) - 使用 Zookeeper、Eureka、Consul、Nacos 等进行服务注册。
- [服务网关](./doc/cookbook/service-proxy.md) - 使用 Zookeeper、Eureka、Consul、Nacos 等进行服务注册。
- [WebAssembly](./doc/cookbook/wasm.md) - 使用 AssemblyScript 来扩展 Easegress。
- [WebSocket](./doc/cookbook/websocket.md) - Easegress 的 WebSocket 代理。
- [工作流](./doc/cookbook/workflow.md) - 将若干 API 进行组合,定制为工作流。
- [Easegress 集群化部署](./doc/cookbook/multi_node_cluster.md) - Easegress 如何进行集群化多点部署。

完整的列表请参见 [Cookbook](./doc/cookbook/README.md)

完整的列表请参见 [Cookbook](./doc/README.md#1-cookbook--how-to-guide)

## 入门

Expand Down Expand Up @@ -249,7 +252,7 @@ Body : Hello, Easegress
现在我们可以给 Pipeline 添加其它过滤器来实现更多的功能,例如,如果希望对 `pipeline-demo` 可以验证和改写请求,可以这样做:
<p align="center">
<img src="./doc/pipeline-demo.png" width=240>
<img src="./doc/imgs/pipeline-demo.png" width=240>
</p>
```bash
Expand Down Expand Up @@ -302,7 +305,7 @@ Body : {"message": "Hello, Easegress"}
## 文档
更详细的文档请移步 [reference](./doc/reference.md) 和 [developer guide](./doc/developer-guide.md)。
更多更详细的文档请移步 [Easegress 文档列表](./doc/README.md)
## 路线图
Expand Down
93 changes: 93 additions & 0 deletions doc/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# Easegress Documentation

- [Easegress Documentation](#easegress-documentation)
- [1. Cookbook / How-To Guide](#1-cookbook--how-to-guide)
- [2. Development Guide](#2-development-guide)
- [3. Performance](#3-performance)
- [4. Reference Guide](#4-reference-guide)
- [4.1 Controllers](#41-controllers)
- [4.1.1 System Controllers](#411-system-controllers)
- [4.1.2 Business Controllers](#412-business-controllers)
- [4.2 Filters](#42-filters)

## 1. Cookbook / How-To Guide

This is a cookbook that lists a number of useful and practical examples on how to use Easegress for different scenarios.

- [API Aggregator](./cookbook/api-aggregator.md) - Aggregating many APIs into a single API.
- [Cluster Deployment](./cookbook/multi-node-cluster.md) - How to deploy multiple Easegress cluster nodes.
- [Distributed Tracing](./cookbook/distributed-tracing.md) - How to do APM tracing - Zipkin.
- [FaaS](./cookbook/faas.md) - Supporting Knative FaaS integration
- [Flash Sale](./cookbook/flash-sale.md) - How to do high concurrent promotion sales with Easegress
- [Kubernetes Ingress Controller](./cookbook/k8s-ingress-controller.md) - How to integrated with Kubernetes as ingress controller
- [LoadBalancer](./cookbook/load-balancer.md) - A number of strategy of load balancing
- [MQTTProxy](./cookbook/mqtt-proxy.md) - An Example to MQTT proxy with Kafka backend.
- [Performance](./cookbook/performance.md) - Performance optimization - compression, caching etc.
- [Pipeline](./cookbook/pipeline.md) - How to orchestrate HTTP filters for requests/responses handling
- [Resilience and Fault Tolerance](./cookbook/resilience.md) - Circuit Breaker, Rate Limiter, Retryer, Time limiter, etc. (Porting from [Java resilience4j](https://github.com/resilience4j/resilience4j))
- [Security](./cookbook/security.md) - How to do authentication by Header, JWT, HMAC, OAuth2, etc.
- [Service Proxy](./cookbook/service-proxy.md) - Supporting the Microservice registries - Zookeeper, Eureka, Consul, Nacos, etc.
- [WebAssembly](./cookbook/wasm.md) - Using AssemblyScript to extend the Easegress
- [WebSocket](./cookbook/websocket.md) - WebSocket proxy for Easegress
- [Workflow](./cookbook/workflow.md) - An Example to make a workflow for a number of APIs.

## 2. Development Guide

- [Easegress Roadmap](./Roadmap.md) - The development roadmap of Easegress.
- [Developer Guide](./developer-guide.md) - A guide help to develop the Easegress.

## 3. Performance

- [Benchmark](./reference/benchmark.md) - Performance Test Report.
- [Linux Kernel Tuning](./reference/kernel-tuning.md) - Tuning the Linux Kernel to make the Easegress run faster.

## 4. Reference Guide

### 4.1 Controllers

The Easegress controller is the core entity to control kinds of working. There are two kinds of controllers - system and business.

For the full document, please check - [Controller Reference](./reference/controllers.md)

#### 4.1.1 System Controllers

The following controllers are system level controllers. One and only one instance of them are created in every Easegress node and they can't be deleted.

- [ServiceRegistry](./reference/controllers.md#serviceregistry) - The service hub for all service registries - Consul, Etcd, Eureka, Zookeeper, Nacos...
- [TrafficController](./reference/controllers.md#trafficcontroller) - TrafficController handles the lifecycle of HTTPServer and HTTPPipeline and their relationship.
- [RawConfigTrafficController](./reference/controllers.md#rawconfigtrafficcontroller) - RawConfigTrafficController maps all traffic static configurations to TrafficController in the namespace `default`.

#### 4.1.2 Business Controllers

It could be created, updated, deleted by admin operation. They control various resources such as mesh traffic, service discovery, faas, and so on.

- [EaseMonitorMetrics](./reference/controllers.md#) - Monitor metrics of Easegress and send them to Kafka.
- [FaaSController](./reference/controllers.md#faascontroller) - For Easegress and FaaS products integration purpose.
- [IngressController](./reference/controllers.md#ingresscontroller) - an implementation of Kubernetes ingress controller, it watches Kubernetes Ingress, Service, Endpoints, and Secrets then translates them to Easegress HTTP server and pipelines.
- [MeshController](./reference/controllers.md#meshcontroller) - This is for [EaseMesh](https://github.com/megaease/easemesh) project.
- [ConsulServiceRegistry](./reference/controllers.md#consulserviceregistry) - supports service discovery for Consul as backend.
- [EtcdServiceRegistry](./reference/controllers.md#etcdserviceregistry) - support service discovery for Etcd as backend.
- [EurekaServiceRegistry](./reference/controllers.md#eurekaserviceregistry) - supports service discovery for Eureka as backend.
- [ZookeeperServiceRegistry](./reference/controllers.md#zookeeperserviceregistry) - supports service discovery for Zookeeper as backend.
- [NacosServiceRegistry](./reference/controllers.md#nacosserviceregistry) - supports service discovery for Nacos as backend.
- [AutoCertManager](./reference/controllers.md#autocertmanager) - automatically manage HTTPS certificates.

### 4.2 Filters

- [API Aggregator](./reference/filters.md#APIAggregator) - The API Aggregator forwards one request to multiple API HTTP Pipelines in the same namespace and aggregates responses.
- [Proxy](./reference/filters.md#Proxy) - The Proxy filter is a proxy of backend service.
- [Bridge](./reference/filters.md#Bridge) - The Bridge filter route requests from one pipeline to other pipelines or HTTP proxies under an HTTP server.
- [CORSAdaptor](./reference/filters.md#CORSAdaptor) - The CORSAdaptor handles the CORS preflight request for backend service.
- [Fallback](./reference/filters.md#Fallback) - The Fallback filter mocks a response as fallback action of other filters.
- [Mock](./reference/filters.md#Mock) - The Mock filter mocks responses according to configured rules, mainly for testing purposes.
- [RemoteFilter](./reference/filters.md#RemoteFilter) - The RemoteFilter is a filter making remote service acting as an internal filter.
- [RequestAdaptor](./reference/filters.md#RequestAdaptor) - The RequestAdaptor modifies the original request according to configuration.
- [CircuitBreaker](./reference/filters.md#CircuitBreaker) - The CircuitBreaker is a finite state machine with three states: `CLOSED`, `OPEN`, and `HALF_OPEN`.
- [RateLimiter](./reference/filters.md#RateLimiter) - The RateLimiter protects backend service for high availability and reliability by limiting the number of requests sent to the service in a configured duration.
- [TimeLimiter](./reference/filters.md#TimeLimiter) - The TimeLimiter limits the time of requests, a request is canceled if it cannot get a response in configured duration.
- [Retryer](./reference/filters.md#Retryer) - The Retryer retries failed requests according to configured policy.
- [ResponseAdaptor](./reference/filters.md#ResponseAdaptor) - The ResponseAdaptor modifies the original response according to the configuration before passing it back.
- [Validator](./reference/filters.md#Validator) - The Validator filter validates requests, forwards valid ones, and rejects invalid ones.
- [WasmHost](./reference/filters.md#WasmHost) - The WasmHost filter implements a host environment for user-developed WebAssembly code.


20 changes: 0 additions & 20 deletions doc/cookbook/README.md

This file was deleted.

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loading

0 comments on commit d04cc65

Please sign in to comment.