Proto 限制
涵蓋 proto schema 中支援的元素數量限制。
本主題記錄 proto schema 中支援的元素(欄位、列舉值等等)數量限制。
此資訊是許多工程師發現的限制集合,但並非詳盡無遺,在某些領域可能不正確或過時。當您在工作中發現限制時,請將其貢獻到此文件中以幫助他人。
欄位數量
僅具有單數 proto 欄位的訊息(例如 Boolean)
- ~2100 個欄位 (proto2)
- ~3100 個欄位 (proto3,不使用 optional 欄位)
由單數欄位擴充的空訊息(例如 Boolean)
- ~4100 個欄位 (proto2)
proto3 不支援擴充。
若要測試此限制,請建立一個欄位數量超過上限的 proto 訊息,並使用 Java proto 規則進行編譯。此限制來自 JVM 規格。
列舉中的值數量
最低限制約為 1700 個值,在 Java 中。其他語言有不同的限制。
訊息總大小
任何序列化形式的 proto 都必須小於 2GiB,因為這是所有實作支援的最大大小。建議限制請求和回應大小。
Proto 反序列化的深度限制
- Java:100
- C++:100
- Go:10000 (計劃將其減少到 100)
如果您嘗試反序列化巢狀深度超過深度限制的訊息,反序列化將會失敗。