istio学习笔记3:envoy代理
Envoy介绍Envoy 是一个为云原生应用设计的开源边缘与服务代理,是云原生计算基金会(CNCF)第三个毕业的项目,GitHub 目前有 13k+ Star。作为为云原生应用设计的代理,它可以在服务旁运行,以平台无关的方式提供必要的特性,所有到服务的流量都通过 Envoy 代理,这里 Envoy 扮演的就是 Sidecar 的角色。特点:基于现代 C++ 开发的 L4/L7 高性能代理。透明代理
Envoy介绍
Envoy 是一个为云原生应用设计的开源边缘与服务代理,是云原生计算基金会(CNCF)第三个毕业的项目,GitHub 目前有 13k+ Star。
作为为云原生应用设计的代理,它可以在服务旁运行,以平台无关的方式提供必要的特性,所有到服务的流量都通过 Envoy 代理,这里 Envoy 扮演的就是 Sidecar 的角色。
特点:
- 基于现代 C++ 开发的 L4/L7 高性能代理。
- 透明代理。
- 流量管理。支持路由、流量复制、分流等功能。
- 治理特性。支持健康检查、熔断、限流、超时、重试、故障注入。
- 多协议支持。支持 HTTP/1.1,HTTP/2,GRPC,WebSocket 等协议代理与治理。
- 负载均衡。加权轮询、加权最少请求、Ring hash、Maglev、随机等算法支持。支持区域感知路由、故障转移等特性。
- 动态配置 API。提供健壮的管控代理行为的接口,实现 Envoy 动态配置热更新。
- 可观察性设计。提供七层流量高可观察性,原生支持分布式追踪。
- 支持热重启。可实现 Envoy 的无缝升级。
- 自定义插件能力。Lua 与多语言扩展沙箱 WebAssembly。
总体来说,Envoy 是一个功能与性能都非常优秀的“双优生”。在实际业务流量入口代理场景下,Envoy 具备先天优势,可以作为云原生技术趋势流量入口的标准技术方案:
- 较 HAProxy、Nginx 更丰富的功能
相较于 HAProxy、Nginx 提供流量代理所需的基本功能(更多高级功能通常需要通过扩展插件方式实现),Envoy 本身基于 C++ 已经实现了相当多代理所需高级功能,如高级负载均衡、熔断、限流、故障注入、流量复制、可观测性等。更为丰富的功能不仅让 Envoy 天生就可以用于多种场景,原生 C++ 的实现相较经过扩展的实现方式性能优势更为明显。
- 与 Nginx 相当,远高于传统 API 网关的性能
在性能方面,Envoy 与 Nginx 在常用协议代理(如 HTTP)上性能相当。与传统 API 网关相比,性能优势明显。如下为 Envoy 与几种业务常用的 API 网关选型在 8 核物理机容器运行环境下,简单路由代理性能对比数据:(网易内部环境实测数据,仅供参考)
参考文献
- Envoy 官方文档: https://www.envoyproxy.io/docsIstio
- Istio:https://istio.io/docsEnvoy
- https://www.jianshu.com/p/90f9ee98ce70WebAssembly
- https://www.wasm.com.cnService Mesh
- https://msd.misuland.com/pd/3545776840385758572_
更多推荐
所有评论(0)