高性能
Envoy 设计用于处理大规模的网络流量,具有高吞吐量和低延迟的特点。它采用异步 I/O 处理模型,可以高效地处理并发连接,确保在高负载下仍能保持稳定的性能。
动态配置
Envoy 支持动态配置,允许在不重启的情况下更新配置文件。这使得运维人员可以实时调整系统设置,响应变化的网络条件和业务需求。
流量管理
Envoy 提供细粒度的流量管理功能,包括:
- 路由:根据请求的属性(如路径、头部信息等)将流量路由到不同的服务或集群。
- 重试:在请求失败时自动重试,以提高请求的成功率。
- 故障注入:模拟服务故障,测试系统的健壮性和容错能力。
- 速率限制:限制特定时间内的请求数量,防止滥用。
- 熔断:监控和管理失败的请求数量,当失败率达到阈值时自动熔断,防止系统过载。
- 负载均衡:将流量分配到多个后端服务,支持多种负载均衡策略,如轮询、随机、基于权重等。
- 流量镜像:复制实时流量到其他服务进行测试或监控,而不影响生产流量。
- 故障恢复:在后端服务不可用时自动切换到备用服务或返回备用响应。
负载均衡
Envoy 支持多种负载均衡策略,包括:
- 轮询(Round Robin):将请求依次分配给后端服务,实现均匀分配。
- 随机(Random):随机选择一个后端服务来处理请求,分散负载。
- 基于权重(Weighted):根据后端服务的权重分配请求,权重高的服务将收到更多请求。
- 最少请求数(Least Request):将请求分配给当前处理请求数最少的后端服务,减轻负载高的服务压力。
- 环形哈希(Ring Hash):使用一致性哈希算法将请求分配给后端服务,确保请求的一致性和均衡性。
- 最小连接数(Least Connections):将请求分配给当前活跃连接数最少的后端服务,适用于长连接场景。
- 自适应请求(Maglev):采用 Maglev 哈希算法实现负载均衡,提供更好的分布一致性和抗故障性。
- 随机加权最少请求数(Weighted Least Request):结合权重和最少请求数策略,根据权重分配请求,并优先选择处理请求数较少的服务。
可观测性
Envoy 内置丰富的监控和日志功能,支持分布式追踪,帮助运维人员了解系统的运行状态。核心功能包括:
- 监控(Metrics):提供详细的性能指标,如请求数、响应时间、错误率等。
- 日志(Logging):记录详细的请求和响应日志,便于问题排查和性能分析。
- 追踪(Tracing):支持分布式追踪,帮助定位跨服务的性能瓶颈和错误。
安全
Envoy 提供多种安全功能,确保数据传输的安全性:
- TLS 加密:支持传输层安全(TLS),加密数据传输,防止数据被窃听和篡改。
- mTLS 认证:支持双向 TLS 认证(mTLS),确保通信双方的身份验证,提高安全性。
- 访问控制:可以配置细粒度的访问控制策略,限制不合法的访问。
- 认证和授权:支持 JWT(JSON Web Token)和 RBAC 等认证或授权方式,确保请求合法性。
- 外部认证:支持通过外部认证服务器进行认证,灵活集成各种认证机制。
扩展性
Envoy 具有高度的扩展性,支持多种扩展方式:
- Lua 脚本:可以通过 Lua 脚本自定义请求处理逻辑,满足特定的业务需求。
- WebAssembly(Wasm):支持 Wasm 扩展,可以在 Envoy 中运行自定义的 Wasm 模块,进一步增强其功能。
服务网格
在 Istio 服务网格中,Envoy 作为边车代理(Sidecar Proxy)部署在每个服务实例旁边,负责处理进出该实例的所有网络流量。它提供了以下关键功能:
- 流量管理:Envoy 可以基于丰富的规则对流量进行路由和控制,支持蓝绿部署、金丝雀发布和流量镜像等场景。
- 负载均衡:Envoy 提供多种负载均衡策略,确保流量均匀分布在服务实例之间,提高系统的可靠性和性能。
- 安全性:Envoy 支持 mTLS(双向 TLS)认证,确保微服务间通信的加密和身份验证。此外,它还提供细粒度的访问控制和速率限制功能,防止滥用和攻击。
- 可观测性:Envoy 内置丰富的监控和日志功能,支持分布式追踪,帮助运维人员了解服务间的通信情况和性能瓶颈。
- 故障恢复:Envoy 支持自动重试、断路器和故障注入等机制,增强系统的稳定性和容错能力。