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 表示形式。