Envoy 简介

什么是 Envoy?

Envoy 是一个高性能、开源的云原生代理,由 Lyft 开发并于 2016 年开源。它广泛应用于微服务架构、服务网格(如 Istio)、API 网关和边缘代理等场景,作为现代分布式系统的流量中枢,帮助开发者和运维团队解耦网络复杂性、提升可观测性和系统弹性。

Envoy 的定位与作用

  • 微服务通信枢纽:在微服务架构中,Envoy 作为 Sidecar 部署在每个服务实例旁,负责所有进出流量,实现统一的流量管理、负载均衡和安全控制。
  • API 网关/边缘代理:Envoy 可作为 API 网关或边缘代理,处理外部流量接入、协议转换、认证鉴权等。
  • 服务网格数据平面:在服务网格(如 Istio)中,Envoy 是事实上的数据平面标准,实现服务间通信的全链路可观测、流量治理和安全。

核心功能和特点

核心功能和特点
核心功能和特点
  • 高性能:Envoy 设计用于处理大规模的网络流量,具有高吞吐量和低延迟的特点。
  • 动态配置:支持热重载配置,允许在不重启的情况下更新配置。
  • 流量管理:提供细粒度的流量控制,包括路由、重试、故障注入等功能。
  • 负载均衡:支持多种负载均衡策略,如轮询、随机、基于权重等。
  • 可观测性:内置丰富的监控和日志功能,支持分布式追踪。
  • 安全:支持 TLS 和 mTLS,加密传输数据,确保通信安全。
  • 扩展性:支持 Lua 脚本和 WebAssembly(Wasm)扩展,可以根据需要定制功能。

典型部署模式

  • Sidecar(边车)模式:每个服务实例旁部署一个 Envoy 进程,拦截和管理该实例的所有入站和出站流量,实现服务间通信的统一治理。
  • Edge Proxy(边缘代理)模式:Envoy 作为集群入口,统一处理外部请求,常用于 API 网关、流量入口等场景。

架构核心要素

Envoy 采用模块化、可扩展的架构,核心组件包括:

  • 监听器(Listener):定义 Envoy 接收流量的网络端点(IP:端口或 Unix Socket)。
  • 过滤器链(Filter Chain):每个监听器可配置一组 L3/L4(TCP/UDP)和 L7(HTTP)过滤器,实现流量的分层处理,如 TLS、路由、认证等。
  • HTTP 连接管理器(HCM):特殊的网络过滤器,将原始字节流解析为 HTTP 消息,支持 HTTP/1.1、HTTP/2、HTTP/3 和 WebSocket,负责 HTTP 过滤器链、路由、日志、追踪等。
  • 路由与虚拟主机(Route & Virtual Host):根据请求路径、头部等属性,将流量路由到不同的上游集群,支持灵活的路由规则和虚拟主机配置。
  • 集群与端点(Cluster & Endpoint):集群是逻辑上的上游服务组,端点是具体的服务实例地址。支持静态、DNS、xDS 动态服务发现。
  • 健康检查与异常检测:支持主动和被动健康检查,自动剔除异常实例,提升系统可用性。
  • 负载均衡:内置多种算法(轮询、最少请求、环形哈希、Maglev、随机等),支持细粒度流量分配。
  • 可观测性:内置丰富的指标、日志和分布式追踪,便于监控和故障排查。
  • 安全:支持 TLS/mTLS、JWT 认证、外部授权、RBAC 等,保障服务间通信安全。
  • 扩展性:支持 Lua 脚本和 WebAssembly(Wasm)扩展,便于自定义功能。

应用场景

Envoy 广泛应用于以下场景:

应用场景
应用场景
  • 服务网格:作为数据平面,统一治理微服务间流量,实现灰度发布、流量镜像、熔断限流等。
  • API 网关:统一入口,处理认证、协议转换、速率限制等。
  • 边缘代理:作为集群边界的高性能反向代理,处理 TLS 卸载、负载均衡、请求路由。
  • 可观测性增强:通过 Envoy 采集全链路指标和追踪,提升系统可观测性。

诞生背景

Envoy 最初由 Lyft 为解决微服务架构下的流量管理和可观测性难题而开发。凭借高性能、丰富功能和强扩展性,Envoy 很快成为云原生领域的流量治理标准组件,并于 2017 年加入 CNCF。

欲了解更多信息,请参见 Envoy 官方文档

文章导航

章节内容

这是章节的内容页面。

章节概览