Envoy是一个高性能的、可扩展的代理服务器,主要用于微服务之间的通信和数据传输。与Docker的容器化技术相比,在一些特定的场景下,Envoy的优势更为明显。
首先,Envoy不需要Docker的运行环境,可以直接在宿主机上运行,减少了部署的复杂性,尤其是在一些资源有限的环境下,例如边缘计算场景,Envoy的轻量化和简单易用的特点更为突出。
node: id: edge-envoy cluster: # 定义集群,这里假设有一个后端服务的集群,包含两个节点 backend_cluster: type: EDS eds_cluster_config: service_name: backend_service lb_policy: ROUND_ROBIN connect_timeout: 0.25s http2_protocol_options: {} circuit_breaker: default: max_connections: 10000 max_pending_requests: 10000 max_requests: 1000000 max_retries: 3 thresholds: - priority: HIGH request_type: HTTP max_connections: 5000 - priority: HIGH request_type: HTTP max_pending_requests: 5000 - priority: HIGH request_type: HTTP max_requests: 50000 - priority: HIGH request_type: HTTP max_retries: 1
其次,Envoy拥有强大的流量控制和路由能力,通过配置文件可以实现各种负载均衡、路由策略和流量管理,同时支持多种传输协议,可满足不同业务场景下的需求。
admin: access_log_path: /dev/null address: socket_address: address: 0.0.0.0 port_value: 9901 static_resources: listeners: - name: listener_1 address: socket_address: address: 0.0.0.0 port_value: 8080 filter_chains: - filters: - name: envoy.http_connection_manager config: codec_type: auto stat_prefix: ingress_http rds: route_config_name: local_route config_source: api_config_source: api_type: GRPC grpc_services: - envoy_grpc: cluster_name: xds_cluster http_filters: - name: envoy.router config: {} clusters: - name: xds_cluster connect_timeout: 0.25s type: STRICT_DNS lb_policy: ROUND_ROBIN load_assignment: cluster_name: xds_cluster endpoints: - lb_endpoints: - endpoint: address: socket_address: address: backend_service port_value: 8080
最后,Envoy支持多种插件和扩展,可以根据业务需求进行二次开发和定制化,灵活性更高。同时,Envoy还有完善的文档和社区支持,可以为用户提供更好的使用体验和技术支持。