簡體   English   中英

Protocol Buffer 與 Json - 何時選擇一個而不是另一個

[英]Protocol Buffer vs Json - when to choose one over another

誰能解釋一下微服務架構何時使用協議緩沖區而不是 JSON? 反之亦然? 同步和異步通信。

何時使用 JSON

  • 您需要或希望數據是人類可讀的
  • 來自服務的數據由 Web 瀏覽器直接使用
  • 您的服務器端應用程序是用 JavaScript 編寫的
  • 您還沒有准備好將數據模型綁定到架構
  • 您沒有足夠的帶寬將另一個工具添加到您的武器庫中
  • 運行不同類型的網絡服務的運營負擔太大

ProtoBuf 的優點

  • 尺寸相對較小
  • 保證類型安全
  • 防止架構違規
  • 為您提供簡單的訪問器
  • 快速序列化/反序列化
  • 向后兼容

當我們在做的時候,你看過flatbuffers嗎?

這里涵蓋了一些方面google protocol buffers vs json vs XML

參考:

https://codeclimate.com/blog/choose-protocol-buffers/

https://codeburst.io/json-vs-protocol-buffers-vs-flatbuffers-a4247f8bda6f

當消費者使用或可能使用內置原生支持 JSON 的語言(例如 Javascript)、Web 瀏覽器或需要人類可讀性的語言編寫時,我會使用 JSON。 說起來,至少對於異步調用來說,很多開發者都喜歡直接檢查隊列的內容進行調試,甚至在正常的開發過程中也很方便。 根據所使用的技術堆棧,使用 protobuf 只是為了減少網絡負載可能值得也可能不值得權衡,因為任何性能提升都不會在異步世界中為您帶來太多好處。 並且我們不再需要像過去在大多數語言中使用 JSON 編組和解組那樣編寫一堆樣板代碼。

我會將 protobuf 用於其他所有事情……如果根據上述考慮還有其他用例可供使用。 您可能會看到一些優勢,例如性能、網絡負載、其版本控制方案提供的向后兼容性、原始文件神奇地附帶的可愛文檔以及一些驗證! 如果由於某種原因你在微服務之間有很多 REST 或其他同步調用,protobuf 可以通過線路而不是 JSON 發送,沒有很多權衡,如果有的話,同時提供很多優勢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM