数据流和请求处理

查看本文大纲

在本节中,我们将详细介绍 Envoy 中数据流和请求处理的完整流程。理解这一流程有助于更好地配置和优化 Envoy 代理的性能和功能。

请求处理流程

下图展示了 Envoy 中处理 HTTP/TLS 请求的数据流:

image
Envoy 中处理 HTTP/TLS 请求的数据流

Envoy 的数据流程和请求处理如下:

  1. 接收请求

    • Listener 接收来自客户端的 TCP 连接或 UDP 数据包。
    • 执行 Listener 过滤器链,进行初步处理(如 SNI 提取)。
  2. 过滤和转换

    • 选择合适的网络过滤器链。
    • 传输套接字(如 TLS)进行解密。
    • HTTP 连接管理器处理 HTTP 连接和请求。
    • 执行 HTTP 过滤器链,进行验证、路由、负载均衡等操作。
  3. 转发请求

    • 选择上游集群和具体的端点。
    • 将处理后的请求分发到选定的上游服务。
  4. 处理响应

    • 接收来自上游服务的响应。
    • HTTP 过滤器再次处理响应。
    • 进行 HTTP/2 编码(如果适用)。
    • 传输套接字进行加密(如果使用 TLS)。
  5. 返回响应

    • 将最终处理后的响应返回给客户端。
  6. 日志和统计

    • 记录访问日志。
    • 更新相关统计数据。

欲了解详细流程,请查看 Life of a Request