xds/type/v3/typed_struct.proto (proto)

.xds.type.v3.TypedStruct

[.xds.type.v3.TypedStruct proto]

TypedStruct 包含一个任意 JSON 序列化协议缓冲区消息,该消息带有 URL,用于描述序列化消息的类型。这与 google.protobuf.Any 非常相似,除了使用 protocol buffer 二进制数据外,它还使用 google.protobuf.Struct 作为值。

此消息旨在嵌入在 Any 中,因此不应从其他 UDPA 消息中直接引用它。

在打包不透明扩展配置时,尽可能将预期类型打包到 Any 中,以提高效率。仅当协议缓冲区描述符不可用时才应使用 TypedStruct,例如:

  • 控制平面发送来自外部源的不透明消息,这些消息最初采用人类可读格式,例如 JSON 或 YAML。

  • 控制平面没有协议缓冲区模式的知识,因此它无法以协议缓冲区二进制格式序列化消息。

  • DPLB 没有其插件或扩展使用的协议缓冲区模式的知识。这必须在 DPLB 功能协商中进行指示。

当 DPLB 在 Any 中接收到 TypedStruct 时,它应该:- 检查 TypedStruct 的 type_url 是否与扩展期望的类型匹配。- 将 value 转换为 type_url 中描述的类型并执行验证。

TODO(lizan):弄清楚如何在不将协议缓冲区描述符与 DPLB 本身链接的 DPLB 扩展(例如 gRPC LB 插件、Envoy WASM 扩展)中使用 TypeStruct。

{
  "type_url": ...,
  "value": {...}
}
type_url

(string) 一个唯一标识序列化协议缓冲区消息类型的 URL。它具有与 google.protobuf.Any 中描述的相同的语义和格式:https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/any.proto

value

(Struct) 上述指定类型的 JSON 表示。