在本节中,我们将详细介绍 Envoy 中数据流和请求处理的完整流程。理解这一流程有助于更好地配置和优化 Envoy 代理的性能和功能。
请求处理流程
下图展示了 Envoy 中处理 HTTP/TLS 请求的数据流:
Envoy 的数据流程和请求处理如下:
-
接收请求:
- Listener 接收来自客户端的 TCP 连接或 UDP 数据包。
- 执行 Listener 过滤器链,进行初步处理(如 SNI 提取)。
-
过滤和转换:
- 选择合适的网络过滤器链。
- 传输套接字(如 TLS)进行解密。
- HTTP 连接管理器处理 HTTP 连接和请求。
- 执行 HTTP 过滤器链,进行验证、路由、负载均衡等操作。
-
转发请求:
- 选择上游集群和具体的端点。
- 将处理后的请求分发到选定的上游服务。
-
处理响应:
- 接收来自上游服务的响应。
- HTTP 过滤器再次处理响应。
- 进行 HTTP/2 编码(如果适用)。
- 传输套接字进行加密(如果使用 TLS)。
-
返回响应:
- 将最终处理后的响应返回给客户端。
-
日志和统计:
- 记录访问日志。
- 更新相关统计数据。
欲了解详细流程,请查看 Life of a Request。