istio服务网格的服务发现和配置发现模型
Envoy xDS是指Envoy Proxy中的一组管理接口,用于动态配置和控制Envoy的行为。xDS代表了“Discovery Service”的缩写,它是一种服务发现和配置推送协议。Envoy使用xDS协议从配置中心获取更新,并根据配置中心的信息自动调整其路由、负载均衡、健康检查等行为。
xDS协议包含多个不同的子协议,每个子协议负责不同的功能。以下是Envoy中常见的xDS子协议:
-
LDS(Listener Discovery Service):LDS用于配置Envoy的监听器。监听器定义Envoy监听哪些网络地址和端口,并将接收的流量传递给哪些filter chain(过滤器链)。
-
RDS(Route Discovery Service):RDS用于配置Envoy的路由规则。路由规则决定了接收到的请求应该被发送到哪些上游主机或集群。
-
CDS(Cluster Discovery Service):CDS用于配置Envoy的集群。集群表示一组上游主机,Envoy可以将请求负载均衡到这些主机上。
-
EDS(Endpoint Discovery Service):EDS用于配置Envoy的终端节点。终端节点是上游主机的具体网络地址,EDS将这些地址提供给Envoy以便进行负载均衡。
Envoy xDS的工作流程通常如下:
-
Envoy启动时,会向配置中心注册,并请求必要的配置信息。
-
配置中心接收到注册请求后,根据Envoy的需求生成并推送相关的xDS配置。
-
Envoy根据收到的配置更新自己的监听器、路由规则、集群和终端节点。
-
配置中心会定期监控服务状态并推送配置更新,Envoy接收到更新后自动调整其配置。
Envoy xDS的优势在于它的动态配置能力。服务的规模和拓扑结构可能会经常变化,使用xDS可以使Envoy实时获取这些变化,并相应地调整路由和负载均衡策略,从而更好地适应服务的变化。
ADS是什么?
ADS代表"Aggregated Discovery Service",是Envoy Proxy中一种改进的xDS(如上所述)协议。与单独的LDS、RDS、CDS和EDS请求不同,ADS将这些请求合并为一个单独的请求,从而减少了与配置中心的通信次数,提高了配置的效率和性能。
使用ADS的主要优势包括:
-
减少通信开销:将多个xDS请求合并为一个请求,可以减少与配置中心的通信次数,尤其在大规模的微服务架构中,可以显著减少网络开销和配置中心的负担。
-
配置整合:将多个xDS配置整合为一个请求和响应,可以降低配置中心的处理复杂性,简化配置管理;同时由于xDS配置之间可能存在依赖问题,由于配置分发时序上的差异,可能导致乱序和依赖问题;ADS统一处理xDS配置分发,解决了配置之间的依赖问题。
-
增强效率:由于Envoy可以在一次请求中获取所有所需的配置信息,这样可以更快地进行配置更新和应用,从而提高系统的响应速度和效率。
-
容错和一致性:使用ADS可以确保多个配置的一致性,因为它们在同一个请求中获取,避免了由于配置更新在不同请求中引起的不一致性。
-
支持长连接:ADS可以利用HTTP/2等支持多路复用的传输协议,允许Envoy与配置中心之间建立长连接,从而减少连接建立和断开的开销。
需要注意的是,虽然ADS在性能和效率方面有明显的优势,但在配置中心的实现上可能会更加复杂,因为配置中心需要能够处理和响应合并的配置请求。因此,使用ADS需要在配置中心和Envoy之间进行更加仔细的协调和实现。