Envoy introduction
简介 Envoy 是一个高性能的网络代理服务,可以用于 Service Mesh。它是专为大型现代 SOA(面向服务架构)架构设计的 L7 代理和通信总线,体积小,性能高。它可以提供通用的网络功能,如负载均衡、服务发现、路由、健康检查、认证、授权等⁵。它还支持动态配置和热重启,以适应不断变化的服务环境²。
Envoy的架构基于一个高度模块化的设计,其中每个模块都专注于不同的网络功能。这种模块化的设计使得Envoy非常灵活,可以轻松地扩展和自定义以满足各种用例和需求。
Envoy的代理是分层的,其中包括网络层,传输层和应用层。网络层负责处理IP包,传输层负责处理TCP和UDP报文,应用层代理负责处理HTTP请求和响应等高级协议。在这些代理层中, Envoy提供了各种过滤器和扩展,以实现各种网络功能,如身份验证,流量转换和日志记录等。
其中,网络层代理实现了一个高性能的L3/L4代理,可以在TCP和UDP层提供负载均衡和故障转移。这意味着Envoy可以将请求分发到多个后端服务器,并确保在服务器出现故障时仍能正常工作。
传输层代理实现了一个基于HTTP/2的L7代理,支持HTTP/1.1,gRPC和WebSocket等协议。这使得Envoy可以在应用层面上提供更多的功能,例如流控制和请求/响应重试等。除此之外,Envoy还支持TCP代理,可以在L4层对TCP数据进行处理。
特性 一些比较比较重要的特性如下:
Envoy 是一个基于现代 C++ 开发的 L4/L7 高性能代理,可以透明地代理各种协议,如 HTTP/1.1,HTTP/2,GRPC,WebSocket 等。 Envoy 支持流量管理、治理特性、负载均衡、动态配置 API、可观察性设计等功能,可以满足复杂的服务网络需求。 Envoy 是一个数据平面第一的设计,即将 Envoy 作为一个独立进程,与每个应用程序服务并行运行,并通过统一的 API 进行配置和管理。 Envoy的核心设计原则之一是可观测性。Envoy提供了丰富的统计信息,日志和跟踪功能,以帮助用户深入了解其网络流量的性能和行为。此外,Envoy还支持各种开放式标准,如Prometheus,Zipkin和Jaeger等,以便用户可以将其数据与其它系统无缝集成。
除此之外,Envoy还支持多种部署方式,例如Docker容器,Kubernetes集群和Mesos框架。这使得Envoy可以轻松地与现代云原生应用程序集成。
总结 总的来说,Envoy是一个功能强大,灵活和高性能的代理,适用于各种网络和安全用例。它的模块化架构和可观测性设计使得Envoy成为一个理想的选择,无论是在公共云,私有云还是混合云环境下使用。