Skip to content

Commit

Permalink
fix typo error (#325)
Browse files Browse the repository at this point in the history
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
  • Loading branch information
willseeyou and mergify[bot] authored Sep 16, 2020
1 parent 8a81a43 commit 981c3fb
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions concepts/envoy.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Envoy 是一款由 Lyft 开源的高性能数据和服务代理软件,使用

在介绍更具体的内容之前,本小节先略微花一些篇幅来介绍 Envoy 中一些常见的概念。在 Envoy 中,数据请求的入口方向被称之为下游(Downstream),而数据请求的出口方向则称之为上游(Upstream)。Envoy 接收来自下游的请求并将之转发给上游。
在下游方向,Envoy 使用监听器(Listener)来监听数据端口,接受下游连接和请求;在上游方向,Envoy 使用集群(Cluster)来抽象上游服务,管理连接池以及与之相关的健康检查等配置。而在监听器和集群之间,Envoy 则使用筛选器(Filter)和路由(Router)将两者联系在一起。
相比于监听器、集群和路由等概念,筛选器可能需要稍微再多一点解释。筛选器是 Envoy 中可拔插的多种功能组件的统称,简单来说,筛选器就是插件。但是 Envoy 中 L3/L4 筛选器架构大大扩展了它的功能界限,以至于筛选器的内涵要比常规理解的“插件”要丰富的多,所以本小节选择了直译官方名称,称之为筛选器而非插件。Envoy 包含多种类型筛选器。其中 L3/L4 筛选器主要用于处理连接和协议解析,不同的 L3/L4 筛选器可以使得 Envoy 代理不同协议的网络数据,举例来说,Envoy中最为核心的 HTTP 代理功能就是构筑在一个名为“HTTP 连接管理器(Http Connection Manager)”的 L4 筛选器之上的。而 L7 筛选器(绝大部分情况下 L7 筛选器都可以和 HTTP 筛选器划等号)则是作为 L4 筛选器的子筛选器存在,用于支撑实现更加丰富的流量治理能力。**监听器、集群、路由和筛选器构成了 Envoy 最为核心的骨架**。
相比于监听器、集群和路由等概念,筛选器可能需要稍微再多一点解释。筛选器是 Envoy 中可拔插的多种功能组件的统称,简单来说,筛选器就是插件。但是 Envoy 中 L3/L4 筛选器架构大大扩展了它的功能界限,以至于筛选器的内涵要比常规理解的“插件”要丰富的多,所以本小节选择了直译官方名称,称之为筛选器而非插件。Envoy 包含多种类型筛选器。其中 L3/L4 筛选器主要用于处理连接和协议解析,不同的 L3/L4 筛选器可以使得 Envoy 代理不同协议的网络数据,举例来说,Envoy 中最为核心的 HTTP 代理功能就是构筑在一个名为“HTTP 连接管理器(Http Connection Manager)”的 L4 筛选器之上的。而 L7 筛选器(绝大部分情况下 L7 筛选器都可以和 HTTP 筛选器划等号)则是作为 L4 筛选器的子筛选器存在,用于支撑实现更加丰富的流量治理能力。**监听器、集群、路由和筛选器构成了 Envoy 最为核心的骨架**。

![Envoy 架构简图](../images/concepts-envoy-arch-simple.png)

Expand All @@ -31,7 +31,7 @@ Envoy 采用多线程以及基于 Libevent 的事件触发机制来保证其超

Main 线程负责配置更新(对接 xDS 服务)、监控指标刷新和输出、对外提供 Admin 端口等工作。此外,Main 线程也负责整个进程的管理。如处理操作系统信号、Envoy 热重启等。

Worker 线程是一个非阻塞的事件循环,每个 Worker 线程都会监听所有的 Listener,并处理相关连接和请求事件。注意,操作系统会保证最终一个事件最终只会被一个 Worker处理。在绝大多数时候,Worker 线程都只在不断的处理下游的请求和上游的响应。极少数情况下,Main 线程会将配置更新以事件的形式添加到 Worker的事件循环中来。
Worker 线程是一个非阻塞的事件循环,每个 Worker 线程都会监听所有的 Listener,并处理相关连接和请求事件。注意,操作系统会保证一个事件最终只会被一个 Worker 处理。在绝大多数时候,Worker 线程都只在不断的处理下游的请求和上游的响应。极少数情况下,Main 线程会将配置更新以事件的形式添加到 Worker的事件循环中来。

文件刷新线程负责将 Envoy 需要持久化的数据写入磁盘。在 Envoy 中,所有打开的文件(主要是日志文件)都分别对应一个独立的文件刷新线程用于周期性的把内存缓冲的数据写入到磁盘文件之中。而 Worker 线程在写文件时,实际只是将数据写入到内存缓冲区,最终由文件刷新线程落盘。如此可以避免 Worker 线程被磁盘 IO 所阻塞。

Expand Down Expand Up @@ -62,7 +62,7 @@ L4 筛选器分为 Read 和 Write 两种不同类型,分别用于读取外部

![Envoy xDS API](../images/concept-envoy-xds.png)

LDS 用于向 Envoy 下发监听器的相关配置用于动态创建新的监听器或者更新已有监听器。其包括监听器的地址、监听端口、完整的筛选器链等等。在实际的生产环境当中,LDS 往往是是整个 Envoy 正常工作的基础。
LDS 用于向 Envoy 下发监听器的相关配置用于动态创建新的监听器或者更新已有监听器。其包括监听器的地址、监听端口、完整的筛选器链等等。在实际的生产环境当中,LDS 往往是整个 Envoy 正常工作的基础。

CDS 用于向 Envoy 下发集群的相关配置用于创建新的集群或者更新已有的集群。其中包括健康检查配置、连接池配置等等。一般情况下,CDS 服务会将其发现的所有可访问的后端服务抽象为集群配置后全量推送给 Envoy。而与 CDS 紧密相关的另一种xDS 服务称之为 EDS。CDS 服务负责集群类型的推送。而当该集群类型为 EDS 时,说明该集群的所有可访问的端点(Endpoints)也需要由通过 xDS 协议动态下发,而不使用 DNS 等手段解析。负责下发端点的服务就称之为 EDS。

Expand All @@ -72,7 +72,7 @@ RDS 用于下发动态的路由规则。路由中最关键的配置包含匹配

## 可观察性

作为云原生时代的新型网络代理,可观察性也是不得不提到的一部分内容。在 Envoy 设计之初,就对其可观察性非常重视,并且通过日志(Access log),指标(Metrics),追踪(Tracing)三个模块从三个不同的维度来实现对所有流经Envoy的请求的统计、观察和监测。
作为云原生时代的新型网络代理,可观察性也是不得不提到的一部分内容。在 Envoy 设计之初,就对其可观察性非常重视,并且通过日志(Access log),指标(Metrics),追踪(Tracing)三个模块从三个不同的维度来实现对所有流经 Envoy 的请求的统计、观察和监测。

日志是对 Envoy 中事件(主要是指下游请求)的详细记录,用于定位一些疑难问题。Envoy 提供了灵活的的标记符系统来让用户可以自由的组装和定义自己的日志格式以及所包含的内容。同时,Envoy 也提供了强大的日志过滤能力,在数据量较大时,可以以此过滤掉非关键数据。借助 xDS 协议,无论是日志格式还是过滤规则,都可以在运行时动态的变化和修改。

Expand Down

0 comments on commit 981c3fb

Please sign in to comment.