知识卡片

xDS协议族的Listener-Cluster-Router三种资源如何标准化配置化通信

结构图卡

内容

代理接管应用通信之后到底会怎么转发,取决于控制平面下发的策略——传统 代理(HAProxy、Nginx)用静态配置文件描述转发规则,跟不上服务网格里 应用需求和拓扑结构的实时变动。Envoy的创新是把代理行为抽象成三种资源, 再定义一套”如何发现和访问这些资源”的API,统称xDS协议族。Listener(相当 于Envoy的监听端口,接收来自下游应用的数据,可以同时开多个、策略互相 隔离;自动发现服务叫LDS,是所有其他xDS服务的基础——没有监听端口的 Envoy无法为任何应用服务)。Cluster(Envoy能连接到的一组提供相同服务的 上游主机,含连接池、超时时间、Endpoint地址等信息;在Kubernetes环境里 基本等同于Service,承担服务发现职责;自动发现服务叫CDS,通常控制平面 会把外部环境里所有可访问服务全量推给Envoy;EDS则专门负责Cluster内 Endpoint地址的动态下发,替代传统DNS解析)。Router(决定Listener收到的 数据该交给哪个Cluster处理,本质上承担了服务网关的职责;自动发现服务 叫RDS,核心是目标Cluster及匹配规则,视插件配置还可能包含重试/分流/限流 这类网关过滤器职能)。三者串联起来正好对应一次请求的完整路径:Listener 接收→Router决定去哪→Cluster负责实际转发。xDS的价值在于给数据平面和 控制平面之间的交互第一次确立了事实标准——此后任何遵循xDS协议的控制 平面和数据平面产品都能自由组合搭配。

结构图

flowchart LR
    A[下游应用数据] --> B["Listener: 监听端口<br/>LDS发现"]
    B --> C["Router: 决定转发目标<br/>RDS发现, 承担网关职能"]
    C --> D["Cluster: 上游服务集合<br/>CDS/EDS发现, 承担服务发现职能"]
    D --> E[上游服务]

参考来源

- 位置:《凤凰架构:构建可靠的大型分布式系统》第15章"服务网格"15.1.2节 "数据平面"(源文件:_epub-src对应OEBPS/Text/chapter171.xhtml) - 结论依据:原文定义Listener/Cluster/Router三种资源的职责及对应的LDS/ CDS/EDS/RDS发现服务,说明它们共同构成了数据平面配置和策略的事实标准, 直接支撑本卡片的结构梳理。 - 原始内容:Envoy在这方面进行了创新,它将代理转发的行为规则抽象成 Listener、Router、Cluster三种资源,以此为基础,又定义了应该如何发现 和访问这些资源的一系列API,现在这些资源和API被统称为"xDS协议族"。