Skip to content

Commit 0ff8dde

Browse files
fix misspelling and improve README (#208)
Signed-off-by: Sad-polar-bear <[email protected]>
1 parent db95a79 commit 0ff8dde

File tree

2 files changed

+18
-18
lines changed

2 files changed

+18
-18
lines changed

README.md

+13-13
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,17 @@
2929

3030
**Aeraki** [Air-rah-ki] is the Greek word for 'breeze'. While service mesh becomes an important infrastructure for microservices, many(if not all) service mesh implementations mainly focus on HTTP protocols and treat other protocols as plain TCP traffic. Aeraki Mesh is created to provide a non-intrusive, highly extendable way to manage any layer-7 traffic in a service mesh.
3131

32-
Note: Aeraki only handles none-HTTP layer-7 traffic in a service mesh, and leaves the HTTP traffic to other existing service mesh projects. (As they have already done a very good job on it, and we don't want to reinvent the wheel! )
32+
Note: Aeraki only handles non-HTTP layer-7 traffic in a service mesh, and leaves the HTTP traffic to other existing service mesh projects. (As they have already done a very good job on it, and we don't want to reinvent the wheel! )
3333
Aeraki currently can be integrated with Istio, and it may support other service mesh projects in the future.
3434

3535
## Problems to solve
3636

3737
We are facing some challenges in service meshes:
38-
* Istio and other popular service mesh implementations have very limited support for layer 7 protocols other than HTTP and gRPC.
38+
* Istio and other popular service mesh implementations have very limited support for layer-7 protocols other than HTTP and gRPC.
3939
* Envoy RDS(Route Discovery Service) is solely designed for HTTP. Other protocols such as Dubbo and Thrift can only use listener in-line routes for traffic management, which breaks existing connections when routes change.
4040
* It takes a lot of effort to introduce a proprietary protocol into a service mesh. You’ll need to write an Envoy filter to handle the traffic in the data plane, and a control plane to manage those Envoy proxies.
4141

42-
Those obstacles make it very hard, if not impossible, for users to manage the traffic of other widely-used layer 7 protocols in microservices. For example, in a microservices application, we may have the below protocols:
42+
Those obstacles make it very hard, if not impossible, for users to manage the traffic of other widely-used layer-7 protocols in microservices. For example, in a microservices application, we may have the below protocols:
4343

4444
* RPC: HTTP, gRPC, Thrift, Dubbo, Proprietary RPC Protocol …
4545
* Messaging: Kafka, RabbitMQ …
@@ -52,17 +52,17 @@ If you have already invested a lot of effort in migrating to a service mesh, of
5252

5353
## Aeraki's approach
5454

55-
To address these problems, Aeraki Mesh providing a non-intrusive, extendable way to manage any layer 7 traffic in a service mesh.
55+
To address these problems, Aeraki Mesh provides a non-intrusive, extendable way to manage any layer-7 traffic in a service mesh.
5656
![ Aeraki ](docs/aeraki-architecture.png)
5757

5858
As this diagram shows, Aeraki Mesh consists of the following components:
5959

6060
* Aeraki: [Aeraki](https://github.com/aeraki-mesh/aeraki) provides high-level, user-friendly traffic management rules to operations, translates the rules to envoy filter configurations, and leverages Istio’s `EnvoyFilter` API to push the configurations to the sidecar proxies. Aeraki also serves as the RDS server for MetaProtocol proxies in the data plane. Contrary to Envoy RDS, which focuses on HTTP, Aeraki RDS is aimed to provide a general dynamic route capability for all layer-7 protocols.
61-
* MetaProtocol Proxy: [MetaProtocol Proxy](https://github.com/aeraki-mesh/meta-protocol-proxy) provides common capabilities for Layer-7 protocols, such as load balancing, circuit breaker, routing, rate limiting, fault injection, and auth. Layer-7 protocols can be built on top of MetaProtocol. To add a new protocol into the service mesh, the only thing you need to do is implementing the [codec interface](https://github.com/aeraki-mesh/meta-protocol-proxy/blob/ac788327239bd794e745ce18b382da858ddf3355/src/meta_protocol_proxy/codec/codec.h#L118) and a couple of lines of configuration. If you have special requirements which can’t be accommodated by the built-in capabilities, MetaProtocol Proxy also has an application-level filter chain mechanism, allowing users to write their own layer-7 filters to add custom logic into MetaProtocol Proxy.
61+
* MetaProtocol Proxy: [MetaProtocol Proxy](https://github.com/aeraki-mesh/meta-protocol-proxy) provides common capabilities for Layer-7 protocols, such as load balancing, circuit breaker, routing, rate limiting, fault injection, and auth. Layer-7 protocols can be built on top of MetaProtocol. To add a new protocol into the service mesh, the only thing you need to do is to implement the [codec interface](https://github.com/aeraki-mesh/meta-protocol-proxy/blob/ac788327239bd794e745ce18b382da858ddf3355/src/meta_protocol_proxy/codec/codec.h#L118) and a couple of lines of configuration. If you have special requirements which can’t be accommodated by the built-in capabilities, MetaProtocol Proxy also has an application-level filter chain mechanism, allowing users to write their own layer-7 filters to add custom logic into MetaProtocol Proxy.
6262

6363
[Dubbo](https://github.com/aeraki-mesh/meta-protocol-proxy/tree/master/src/application_protocols/dubbo) and [Thrift](https://github.com/aeraki-mesh/meta-protocol-proxy/tree/master/src/application_protocols/thrift) have already been implemented based on MetaProtocol. More protocols are on the way. If you're using a close-source, proprietary protocol, you can also manage it in your service mesh simply by writing a MetaProtocol codec for it.
6464

65-
Most request/response style, stateless protocols can be built on top of the MetaProtocol Proxy. However, some protocols' routing policies are too "special" to be normalized in MetaProtocol. For example, Redis proxy uses a slot number to map a client query to a specific Redis server node, and the slot number is computed by the key in the request. Aeraki can still manage those protocols as long as there's an available Envoy Filter in the Envoy proxy side. Currently, for protocols in this category, [Redis](https://github.com/aeraki-mesh/aeraki/blob/master/docs/zh/redis.md) and Kafka are supported in Aeraki.
65+
Most request/response style, stateless protocols can be built on top of the MetaProtocol Proxy. However, some protocols' routing policies are too "special" to be normalized in MetaProtocol. For example, the Redis proxy uses a slot number to map a client query to a specific Redis server node, and the slot number is computed by the key in the request. Aeraki can still manage those protocols as long as there's an available Envoy Filter in the Envoy proxy side. Currently, for protocols in this category, [Redis](https://github.com/aeraki-mesh/aeraki/blob/master/docs/zh/redis.md) and Kafka are supported in Aeraki.
6666
## Reference
6767
* [Implement an application protocol](https://www.aeraki.net/zh/docs/v1.0/tutorials/implement-a-custom-protocol/)
6868
* [Dubbo (中文) ](https://github.com/aeraki-mesh/dubbo2istio#readme)
@@ -75,22 +75,22 @@ Aeraki can manage the below protocols in a service mesh:
7575
* Kafka (Envoy native filter)
7676
* Redis (Envoy native filter)
7777
* MetaProtocol-Dubbo
78-
* MetaProtocol-Thfirt
78+
* MetaProtocol-Thrift
7979
* MetaProtocol-bRPC (A RPC protocol open-source by Baidu)
8080
* MetaProtocol-tRPC (A proprietary RPC protocol used in Tencent)
8181
* MetaProtocol-qza (A proprietary protocol used in Tencent Music)
8282
* MetaProtocol-videoPacket (A proprietary protocol used in Tencent Media Data Platform)
83-
* MetaProtocol-OthersAlauda, Tencent iGame...
83+
* MetaProtocol-Others: Alauda, Tencent iGame...
8484
* MetaProtocol-Private protocols: Have a private protocol? No problem, any layer-7 protocols built on top of the [MetaProtocol](https://github.com/aeraki-mesh/meta-protocol-proxy) can be managed by Aeraki
8585

8686
Supported Features:
8787
* Traffic Management
8888
* [x] Request Level Load Balancing/Locality Load Balancing (Supports Consistent Hash/Sticky Session)
8989
* [x] Circuit breaking
90-
* [x] Flexible Route Match Conditions (any properties can be exacted from layer-7 packet and used as match conditions)
90+
* [x] Flexible Route Match Conditions (any properties can be exacted from layer-7 packets and used as match conditions)
9191
* [x] Dynamic route update through Aeraki MetaRDS
9292
* [x] Version Based Routing
93-
* [x] Traffic Splittin
93+
* [x] Traffic Splitting
9494
* [x] Local Rate Limit
9595
* [x] Global Rate Limit
9696
* [x] Message mutation
@@ -103,7 +103,7 @@ Supported Features:
103103
* [x] Peer Authorization on Interface/Method
104104
* [ ] Request Authorization
105105

106-
> Note: Protocols built on top of MetaProtocol supports all above features in Aeraki Mesh, Envoy native filters only support some of the above features, depending on the capacities of the native filters.
106+
> Note: Protocols built on top of MetaProtocol support all the above features in Aeraki Mesh, Envoy native filters only support some of the above features, depending on the capacities of the native filters.
107107
108108
## Demo
109109

@@ -122,7 +122,7 @@ https://www.aeraki.net/docs/v1.0/install/
122122
### Build Aeraki Binary
123123

124124
```bash
125-
# build aeraki binary on linux
125+
# build aeraki binary on Linux
126126
make build
127127

128128
# build aeraki binary on darwin
@@ -154,7 +154,7 @@ Sincerely thank everyone for choosing, contributing, and using Aeraki. We create
154154

155155
## Contact
156156
* Mail: If you're interested in contributing to this project, please reach out to [email protected]
157-
* Wechat Group: Please contact Wechat ID: zhao_huabing to join the Aeraki Wechat group
157+
* WeChat Group: Please contact Wechat ID: zhao_huabing to join the Aeraki Wechat group
158158
* Slack: Join [Aeraki slack channel](https://istio.slack.com/archives/C02UB8YJ600)
159159

160160
## Landscapes

README.zh-CN.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -40,23 +40,23 @@
4040

4141
这些问题使得用户难以在服务网格中管理微服务中其他广泛使用的7层协议的流量。例如,在一个微服务应用中,我们可能使用以下协议。
4242

43-
* RPC: HTTP, gRPC, Thrift, Dubbo, Proprietary RPC Protocol
43+
* RPC: HTTP, gRPC, Thrift, Dubbo, 私有 RPC 协议
4444
* 消息队列: Kafka, RabbitMQ …
4545
* 缓存: Redis, Memcached …
4646
* 数据库: MySQL, PostgreSQL, MongoDB …
4747

4848
![ 微服务中常使用的七层协议 ](docs/protocols.png)
4949

50-
如果你已经在服务网格中投入了大量的精力,当然,你希望得到它的最大好处--管理你的微服务中所有协议的流量
50+
如果你已经在服务网格中投入了大量的精力,你当然希望能够在服务网格中管理所有这些协议的流量
5151

5252
## Aeraki 的解决方案
5353

54-
为了解决这些问题,Aeraki Mesh 提供了一种非侵入性的、可扩展的方式来管理任何服务网中的7层流量
54+
为了解决这些问题,Aeraki Mesh 提供了一种非侵入性的、高度可扩展的方式来管理任何服务网中的7层流量
5555
![ Aeraki ](docs/aeraki-architecture.png)
5656

5757
正如该图所示,Aeraki Mesh 由以下几部分组成。
5858

59-
* Aeraki: [Aeraki](https://github.com/aeraki-mesh/aeraki) 为运维提供了高层次的、用户友好的流量管理规则,将规则转化为 envoy 代理配置,并利用 Istio 的`EnvoyFilter` API 将配置推送给数据面的 sidecar 代理。 Aeraki 还在控制面中充当了 MetaProtocol Proxy 的 RDS 服务器。不同于专注于 HTTP 的 Envoy RDS,Aeraki RDS 旨在为所有七层协议提供通用的动态路由能力。
59+
* Aeraki: [Aeraki](https://github.com/aeraki-mesh/aeraki) 为运维提供了高层次的、用户友好的流量管理规则,将规则转化为 envoy 代理配置,并利用 Istio 的`EnvoyFilter` API 将配置推送给数据面的 sidecar 代理。 Aeraki 还在控制面中充当了 MetaProtocol Proxy 的 RDS(路由发现服务)服务器。不同于专注于 HTTP 的 Envoy RDS,Aeraki RDS 旨在为所有七层协议提供通用的动态路由能力。
6060
* MetaProtocol Proxy: [MetaProtocol Proxy](https://github.com/aeraki-mesh/meta-protocol-proxy) 是一个七层代理框架,为七层协议提供了常用的流量管理能力,如负载均衡、熔断、路由、本地/全局限流、故障注入、指标收集、调用跟踪等等。我们可以基于 MetaProtocol Proxy 提供的通用能力创建自己专有协议的七层代理。要在服务网格中加入一个新的协议,唯一需要做的就是实现 [编解码器接口](https://github.com/aeraki-mesh/meta-protocol-proxy/blob/ac788327239bd794e745ce18b382da858ddf3355/src/meta_protocol_proxy/codec/codec.h#L118) (通常只需数百行代码)和几行 yaml 配置。如果有特殊的要求,而内置的功能又不能满足,MetaProtocol Proxy 还提供了一个扩展机制,允许用户编写自己的七层过滤器,将自定义的逻辑加入 MetaProtocol Proxy 中。
6161

6262
MetaProtocol Proxy 中已经内置了 [Dubbo](https://github.com/aeraki-mesh/meta-protocol-proxy/tree/master/src/application_protocols/dubbo)[Thrift](https://github.com/aeraki-mesh/meta-protocol-proxy/tree/master/src/application_protocols/thrift) 支持。如果你正在使用一个闭源的专有协议,也可以在服务网格中管理它,只需为它编写一个 MetaProtocol 编解码器即可。
@@ -149,7 +149,7 @@ make docker-build-e2e
149149

150150
## 谁在使用 Aeraki?
151151

152-
真诚地感谢大家选择、贡献和使用 Aeraki。我们创建这个 issue 是为了收集使用案例,以便我们能够推动 Aeraki 社区向正确的方向发展,以更好地服务于真实的使用场景。我们鼓励您在这个问题上提交评论,包括您的使用方式:https://github.com/aeraki-mesh/aeraki/issues/105
152+
真诚地感谢大家选择、贡献和使用 Aeraki。我们创建了这个 issue 来收集 Aeraki 的使用案例,以便我们能够推动 Aeraki 社区向正确的方向发展,以更好地服务于真实的使用场景。我们鼓励您在这个问题上提交评论,包括您的使用方式:https://github.com/aeraki-mesh/aeraki/issues/105
153153

154154
## 联系我们
155155
* Mail: 如果你有兴趣为这个项目作出贡献,请联系 [email protected]

0 commit comments

Comments
 (0)