#2795·grpc-rust

gRPC-xDS: xDS 联合 (A47)

作者: W4lspirit创建于 2026年8月7日更新于 2026年8月18日

_我没有权限创建 https://GitHub.com/grpc/grpc-Rust/issues/2753 的子问题_ ##### 功能请求 ##### 组件 实现范围为 xds-client/tonic-xds 组件 ##### 理由 目前的 xds-client 不支持多个权限 ##### 建议 添加对 https://GitHub.com/grpc/proposal/blob/master/A47-xds-federation.md 的支持 ##### 如何实现新功能,为什么?请添加已考虑的缺点 ##### 大致计划 [ ] 添加标准 xdstp 资源名解析 [ ] 添加权限配置类型 [ ] 重构单个 ADS 工作程序为行为者和服务器任务 [ ] 添加对权限感知的资源路由和缓存 ##### 替代方案 ##### 是否有其他解决此问题的方法,您已经考虑过吗?它们的潜在缺点是什么?为什么选择了建议的解决方案而不是这些替代方案? ##### 开放问题(随着我取得进展,还会有更多) 我缺少有关当前组件交互和演进的信息。 * `grpc-xds` 最终需要使用启动配置结构 * 死锁问题 https://GitHub.com/grpc/grpc-Rust/issues/2778#issuecomment-5184644089 可能需要做出一些更改 ##### 建议的更新 ##### 阻塞行为 - [ ] 客户端工作程序历来拥有一个 ADS 流,因此所有订阅都发送到顶层服务器。按权限路由需要独立的流状态、重连、非序号/版本、超时和 ACK/NACK 排序。 - [ ] 服务器身份不能仅是 URI。流去重必须包括 URI、凭据和服务器功能。 - [ ] 仅以裸名称为键的资源/缓存状态可能会在不同的权限之间发生冲突。必须保留完整的标准资源名称,以便通过 LDS、RDS、CDS 和 EDS 传递。 - [ ] 启动权限和监听模板不能启用,直到观察者被路由到对应的权限服务器;部分支持可能会将资源发送到错误的控制平面。 ##### 缺少功能 - [ ] xTP1 `xdstp://` 资源名解析和标准化。 - [ ] 精确一次性百分比解码的权限提取。 - [ ] 上下文参数标准化。 - [ ] 验证嵌入的 xTP1 资源类型是否匹配被监视的类型。 - [ ] gRFC A47 启动权限和客户端监听资源名模板。 - [ ] 按权限选择 xDS 服务器并共享流,对于相同的服务器配置。 - [ ] gRFC A71 按权限优先级回退和恢复。 - [ ] 按服务器通道凭据和服务器功能处理。 - [ ] 对权限安全的级联订阅和缓存键通过 LDS/RDS/CDS/EDS。 ##### 发现的问题 - [ ] 连接构建、流创建和流写失败并不总是到达工作程序,从而阻止回退和断开的指标。 - [ ] 通配符订阅可以在后续请求或 ACK 中被替换为命名订阅。 - [ ] 无效的替换可能被标记为 `NACKedButCached`,然后错误地覆盖为已删除。 - [ ] ACK/NACK