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

.xds.type.v3.TypedStruct

[.xds.type.v3.TypedStruct proto]

TypedStruct 包含任意 JSON 序列化的協定緩衝區訊息,其中包含描述序列化訊息類型的 URL。這與 google.protobuf.Any 非常相似,不同之處在於它採用 google.protobuf.Struct 作為值,而不是使用協定緩衝區二進制格式。

此訊息旨在嵌入在 Any 內部,因此不應直接從其他 UDPA 訊息中引用。

在打包不透明的擴充組態時,如果可能,最好將預期的類型打包到 Any 中,以提高效率。只有在沒有 proto 描述符時才應使用 TypedStruct,例如:

  • 控制平面發送來自外部來源且為人類可讀格式(例如 JSON 或 YAML)的不透明訊息。

  • 控制平面不了解協定緩衝區架構,因此無法以協定緩衝區二進制格式序列化訊息。

  • DPLB 不了解其插件或擴充功能使用的協定緩衝區架構。這必須在 DPLB 功能協商中指出。

當 DPLB 在 Any 中接收到 TypedStruct 時,它應:- 檢查 TypedStruct 的 type_url 是否與擴充功能預期的類型相符。- 將值轉換為 type_url 中描述的類型並執行驗證。

TODO(lizan): 研究如何將 TypeStruct 與未將 protobuf 描述符與 DPLB 本身連結的 DPLB 擴充功能(例如 gRPC LB 插件、Envoy WASM 擴充功能)一起使用。

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

(字串) 一個唯一標識序列化協定緩衝區訊息類型的 URL。它具有與 google.protobuf.Any 中描述的相同的語義和格式:https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/any.proto

value

(Struct) 上述指定類型的 JSON 表示形式。