1. 程式人生 > >protobuf,json,xml,binary,Thrift之間的對比

protobuf,json,xml,binary,Thrift之間的對比

一條訊息資料,用protobuf序列化後的大小是json的10分之一,xml格式的20分之一,是二進位制序列化的10分之一,總體看來ProtoBuf的優勢還是很明顯的。

protobuf是google提供的一個開源序列化框架,類似於XML,JSON這樣的資料表示語言,詳情訪問protobuf的google官方網站。

protobuf在google中是一個比較核心的基礎庫,作為分散式運算涉及到大量的不同業務訊息的傳遞,如何高效簡潔的表示、操作這些業務訊息在google這樣的大規模應用中是至關重要的。而protobuf這樣的庫正好是在效率、資料大小、易用性之間取得了很好的平衡。

protobuf簡單總結如下幾點:

1.靈活(方便介面更新)、高效(效率經過google的優化,傳輸效率比普通的XML等高很多);

2.易於使用;開發人員通過按照一定的語法定義結構化的訊息格式,然後送給命令列工具,工具將自動生成相關的類,可以支援java、c++、python等語言環境。通過將這些類包含在專案中,可以很輕鬆的呼叫相關方法來完成業務訊息的序列化與反序列化工作。

3.語言支援;原生支援c++,java,python

個人總結的適用protobuf的場合:

1.需要和其它系統做訊息交換的,對訊息大小很敏感的。那麼protobuf適合了,它語言無關,訊息空間相對xml和json等節省很多。
2.小資料的場合。如果你是大資料,用它並不適合。
3.專案語言是c++,java,python的,因為它們可以使用google的源生類庫,序列化和反序列化的效率非常高。其它的語言需要第三方或者自己寫,序列化和反序列化的效率不保證。
4.總體而言,protobuf還是非常好用的,被很多開源系統用於資料通訊的工具,在google也是核心的基礎庫。