当前位置: 首页 > news >正文

实用指南:云原生网络基础设施的核心组件Envoy

我们来全面、深入地探讨一下Envoy这个在现代微服务架构中扮演着至关重要角色的中间件。

Envoy 是一个开源的、高性能的边缘和服务代理,专为云原生应用而设计。它最初由 Lyft 公司开发,后来捐赠给Cloud Native Computing Foundation (CNCF),并已成为毕业项目,与 Kubernetes、Prometheus 等项目同级,这标志着其成熟度和广泛应用性。


一、Envoy 的核心定位:它是什么?

透明地接管这些网络流量,并为其提供一系列关键作用,而就是容易来说,Envoy 是一个“智能网络管道”。在微服务架构中,服务之间的通信(东西向流量)以及外部客户端到内部服务的通信(南北向流量)变得极其复杂。Envoy 的核心工作就无需修改应用程序代码

核心设计理念:

  • 透明代理:应用程序通常不知道 Envoy 的存在。它们像平常一样发起网络调用,但这些调用被 Envoy 拦截和处理。

  • 面向 API:所有配置(理论上)都可以通过 API 动态下发,使其能够快速适应变化的环境。

  • 现代 C++:高性能、低延迟、低资源开销。


二、Envoy 的核心功能(为什么它如此强大?)

Envoy 的功能集非常丰富,几乎涵盖了现代网络中间件的所有需求。

1. 服务发现与动态配置
  • Envoy 可以自动发现上游(Upstream)服务实例。它支持多种服务发现源,如:

    • Kubernetes API:自动发现 Pod 和 Endpoints。

    • Consul, Eureka, Nacos:与其他服务注册中心集成。

    • 静态配置:直接配置 IP 地址列表。

  • 通过 xDS API(如 EDS, CDS, LDS, RDS)可以动态接收所有配置(监听器、集群、路由等)的更新,无需重启,实现“热配置”。

2. 高级负载均衡
  • 算法多样:支持轮询、最少请求、哈希、随机加权等。

  • 地域感知路由:优先将流量路由到同一地域或可用区的服务实例,降低延迟。

  • 断路器:自动检测不健康的上游实例,将其从负载均衡池中移除,防止故障扩散。

3. 可观察性(Observability)

这是 Envoy 的一大亮点。它生成了极其丰富的运行时资料:

  • 指标(Metrics):大量内置指标(如请求数、延迟、错误码)可通过 /stats 端点暴露,并与 Prometheus 等系统集成。

  • 分布式追踪(Tracing):原生支持 Zipkin、Jaeger、OpenTelemetry 等,自动为请求注入追踪头,帮助定位跨服务性能问题。

  • 访问日志(Access Logs):记录每个请求的详细信息,可自定义格式并输出到档案或标准输出。

4. 安全(Security)
  • TLS 终端:可以在代理处终止 TLS 连接,减轻后端服务的负担。

  • mTLS(双向 TLS):在服务之间建立基于身份的双向加密通信通道,这是达成零信任网络的基石。

  • 网络层控制:支撑基于 IP/CIDR 的访问控制。

5. 高级路由与流量管理
  • 基于内容的路由:可能根据 HTTP 头部、路径、手段等信息将流量路由到不同的服务版本。

  • 流量切分/镜像:许可将特定比例的流量(如 1%)导入到新的服务版本(金丝雀发布),或者将流量镜像(复制)到另一个服务而不影响主流程(影子流量)。

  • 重试、超时、熔断:精细控制请求的重试策略、超时时间和故障处理逻辑。

6. 协议支持
  • 支持 HTTP/1.1, HTTP/2, gRPC, WebSocket 等主流应用层协议。

  • 甚至支持原始 TCP 和 UDP 代理。


三、Envoy 的典型部署模式

Envoy 的部署非常灵活,重要有两种模式:

  1. Sidecar 模式(服务网格的核心)

    • 这是 Envoy 最著名的部署模式。在每个微服务应用的 Pod(如 Kubernetes Pod)中,都会部署一个 Envoy 容器。该 Envoy 代理只负责处理该特定 Pod 的进出流量。

    • 好处:将网络功能从业务代码中彻底解耦,实现了基础设施层和业务逻辑层的分离。

    • 代表项目Istio, Linkerd等服务网格都将 Envoy 作为其数据平面的默认代理。

  2. 边缘代理/网关模式

    • 将 Envoy 部署在集群的入口处,作为所有外部流量的唯一入口(API 网关)。

    • 好处:统一处理 TLS 终端、路由、认证、限流等入口效果。

    • 代表项目Emissary-ingress(原 Ambassador API Gateway)和Gloo Edge都是基于 Envoy 构建的 API 网关。


四、Envoy 与服务网格(Service Mesh)

Envoy 是大多数现代服务网格的事实标准素材平面

  • 数据平面:由一组 Envoy 代理组成(以 Sidecar 形式部署),负责实际转发流量、执行策略(如路由、加密)、收集遥测数据。

  • 控制平面:如 Istio,负责管理和安装所有信息平面中的 Envoy 代理。它通过 xDS API 向 Envoy 下发策略和路由规则。

简单比喻:控制平面是“交通指挥中心”,制定规则;数据平面(Envoy)是“每个路口的智能交通信号灯”,执行规则。


五、Envoy vs. 其他代理(如 Nginx, HAProxy)

特性EnvoyNginxHAProxy
设计初衷微服务、云原生、动态环境通用 Web 服务器、反向代理、负载均衡器高性能 TCP/HTTP 负载均衡器
动态配置核心优势,原生通过 xDS API 支持主要通过 Lua 脚本或商业版 Nginx Plus需要借助外部工具或特定模块
可观察性极其丰富,内置指标、追踪、日志良好,但高级特性需模块或商业版良好,专注于负载均衡指标
服务网格事实标准,是大多数服务网格的基础较少用于此场景较少用于此场景
性能相当高(C++)非常高(C)非常高(C)
学习曲线较陡峭,概念和配置复杂相对平缓,配置文件直观相对平缓
主要场景微服务内部通信(东西向)、API 网关Web 服务、入口负载均衡(南北向)、缓存高性能 TCP/HTTP 负载均衡(南北向)

结论:Nginx 和 HAProxy 在传统的南北向流量代理(如作为网站入口)方面非常成熟和优秀。而 Envoy 是为云原生时代复杂的东西向流量和服务网格场景而生的,其动态配置能力和可观察性是它的杀手锏。


总结

Envoy 已经从一个单纯的代理,演变为云原生网络基础设施的核心组件。它通过将复杂的网络逻辑(如弹性、安全、可观察性)下沉到基础设施层,极大地简化了微服务应用的制作复杂度。

  • 如果你正在构建或维护一个基于 Kubernetes 的微服务环境,并且面临服务通信混乱、故障排查困难、发布流程复杂等难题,那么引入基于 Envoy 的服务网格(如 Istio)或 API 网关将是一个十分重要的选择。

  • 对于简单的应用或传统的负载均衡需求,Nginx 或 HAProxy 可能仍然是更直接、更轻量的选择。

http://www.jsqmd.com/news/10891/

相关文章:

  • zookeeper常用操作 - 吾辈当奋斗
  • 基于旋转不变子空间(ESPRIT)算法的DOA估计
  • zedboard + AD-FMCOMMS3-EBZ HDL VIVADO 工程构建(二) 构建HDL项目
  • 2025年超微粉碎机优质实力厂家推荐,产品涵盖低温无尘粉碎机/液氮冷冻/万能/锤式粉碎机!
  • 2025 年高低温试验箱制造厂家最新推荐排行榜:精选优质品牌,助力企业精准选购可靠测试设备恒温恒湿试验箱/高低温试验箱厂家推荐
  • MySQL数据库入门指南,5分钟掌握连接与基础操作命令
  • 一堆todo - 吾辈当奋斗
  • 大规模图神经网络高效训练新方法
  • 10 10
  • cocos3节点监听不到TOUCH_START问题
  • Rudin 数学分析第二章
  • Gitee DevOps平台:中国企业数字化转型的加速器
  • aardio在其他窗体调用主窗体的函数
  • 全社会是否真的需要一套AI元人文实践框架?
  • openssl 生成证书
  • 基于自适应观测器的无传感器感应电动机矢量控制仿真
  • 高性能场景为什么推荐使用PostgreSQL,而非MySQL?
  • 【EI期刊、EI-JA检索】第五届新能源与电力工程国际学术会议(ICNEPE 2025)
  • STC单片机用户程序控制ISP下载
  • 国产DevOps工具链崛起:Gitee如何助力企业数字化转型破局
  • SAP移动类型TR和TF和TP
  • 深入解析:分布式之RabbitMQ的使用(2)
  • 禅道怎么更新MySQL数据库的用户名和密码
  • 【2025-10-03】连岳摘抄
  • 国产项目管理工具Gitee:本土化优势赋能企业数字化转型
  • 2025 年国内一体板厂家最新推荐排行榜:装配式 / 珍珠岩 / 免拆 / 外墙保温品类优质企业权威精选
  • 系统提示词优化模板-通用优化-带输出格式要求
  • aardio编程中的常量
  • Group Theory Note 2/2 (Michael Artin Algebra Chapter 2 Groups) (to complete)
  • 偏微分方程数值解法