微服務之ProtoBuf協議
阿新 • • 發佈:2021-08-11
微服務之ProtoBuf協議
微服務之ProtoBuf協議
序列化主要考慮佔用位元組的大小,以及是否支援跨語言。
Xml、Json是目前常用的資料交換格式,它們直接使用欄位名稱維護序列化後類例項中欄位與資料之間的對映關係,一般用字串的形式儲存在序列化後的位元組流中。訊息和訊息的定義相對獨立,
Xml、Json可讀性較好。
Xml、Json序列化後的資料位元組很大,序列化和反序列化的時間較長,資料傳輸效率不高。
Protobuf採用了二進位制位元組的序列化方式,用欄位索引和欄位型別通過演算法計算得到欄位之前的關係對映,從而達到更高的時間效率和空間效率,Protobuf特別適合對資料大小和傳輸速率比較敏感的場合使用。
Protobuf序列後體積相比Xml、Json很小,適合網路傳輸。Protobuf 編碼後體積大約是 JSON 的四分之一,是 XML 的五分之一 。
Protobuf支援跨平臺多語言。
Protobuf訊息格式升級和相容性還不錯。
Protobuf序列和反序列化速度很快,快於Xml、Json速度。
Protobuf應用不廣(相比Xml、Json)。
Protobuf二進位制格式可讀性差。
Protobuf缺乏自描述。