xDS概述
介绍Envoy的XDS API
在 Envoy 中,xDS 被称为数据平面API,是控制平面(如Istio)和数据平面之间的通讯协议。
xDS的含义
xDS 是指 “X Discovery Service”,这里的 “X” 代指多种服务发现协议,包括:
简写 | 全称 | 描述 |
---|---|---|
LDS | Listener Discovery Service | 监听器发现服务 |
RDS | Route Discovery Service | 路由发现服务 |
CDS | Cluster Discovery Service | 集群发现服务 |
EDS | Endpoint Discovery Service | 集群成员发现服务 |
ADS | Aggregated Discovery Service | 聚合发现服务 |
HDS | Health Discovery Service | 健康度发现服务 |
SDS | Secret Discovery Service | 密钥发现服务 |
MS | Metric Service | 指标服务 |
RLS | Rate Limit Service | 限流发现服务 |
LRS | Load Reporting service | 负载报告服务 |
RTDS | Runtime Discovery Service | 运行时发现服务 |
CSDS | Client Status Discovery Service | 客户端状态发现服务 |
ECDS | Extension Config Discovery Service | 扩展配置发现服务 |
xDS | X Discovery Service | 以上诸多API的统称 |
备注:
- SDS 在 xDS v1版本中指的是 Service Discovery Service,后来 SDS 改名 Endpoint Discovery Service/EDS。再后来增加了 Security Discovery Service.
- 后来新增了一些协议,名字不再是 Discovery Service,但也归入xDS的名下
xDS的版本
目前 xDS 主要有三个版本:
- v1: 最早的版本,基于传统的REST-JSON API。
- v2: 基于 Protobuf 和双 REST/gRPC ,v2 API在 2020 年底停止使用,在2021年初完全停止支持
- v3: 目前正在支持的版本。
参见:Supported API versions — envoy 1.20.0 documentation (envoyproxy.io)
xDS的格式
https://www.envoyproxy.io/docs/envoy/latest/configuration/overview/introduction
Envoy xDS APIs在api树中被定义为proto3 Protocol Buffer。它们支持:
-
通过gRPC流式交付xDS API更新。这减少了资源需求,可以降低更新延迟。
-
一个新的REST-JSON API,其中的JSON/YAML格式是通过proto3的canonical JSON映射机械地导出的。
-
通过文件系统、REST-JSON或gRPC端点交付更新。
-
通过扩展的端点分配API和向管理服务器报告负载和资源利用情况来实现高级负载平衡。
-
需要时更强的一致性和排序属性。这些API仍然保持基线最终一致性模型。
有关Envoy和管理服务器之间xDS消息交换方面的进一步细节,请参见xDS协议描述。