Thrift 與協議緩衝區 (Thrift vs Protocol buffers)


問題描述

Thrift 與協議緩衝區 (Thrift vs Protocol buffers)

我使用 PB 已經有一段時間了,但是 Thrift 一直在我的腦海中。

在我看來,thrift 的主要優勢是:

  1. 本機集合(即向量、集合等)vs PBs 重複提供的功能類似於但不太像(沒有迭代器,除非您深入研究文檔指出“在大多數情況下不需要")。
  2. 提供了一個不錯的 RPC 實現,而不僅僅是插入你自己的鉤子。
  3. 更多官方支持的語言(PB 為 Java、C++、Python 提供“官方”支持)

Thrift 的缺點:

  1. RPC 實現意味著我可以't 在頂部插入我自己的(例如)加密/身份驗證層。
  2. Windows 支持似乎不是很好。
  3. PB 肯定有,如果不是更好的話,更易於訪問的文檔。

中性:

  • Windows 上的 .lib/.dll 大小未知(Thrift)。
  • 大尺寸Windows 上的 .lib (PB,但它確實提供了一個明顯更小的 ‑lite)。
  • 在速度方面,它們似乎都相似。

我還沒有準備好冒險並切換到 Thrift,誰能給我更多的優點/缺點,或者選擇哪種方式的理由?

謝謝!

PB 肯定似乎有(如果不是更好的話)更易於訪問的文檔。

中性:

  • Windows 上 .lib/.dll 的大小未知(Thrift) .
  • Windows 上的大尺寸 .lib(PB,但它確實提供了一個明顯更小的 ‑lite)。
  • 在速度方面,它們似乎都相似。
  • li>

我還沒有準備好冒險改用 Thrift,誰能給我更多的優點/缺點,或者選擇哪種方式的理由?

謝謝!

PB 肯定似乎有(如果不是更好的話)更易於訪問的文檔。

中性:

  • Windows 上 .lib/.dll 的大小未知(Thrift) .
  • Windows 上的大尺寸 .lib(PB,但它確實提供了一個明顯更小的 ‑lite)。
  • 在速度方面,它們似乎都相似。
  • li>

我還沒有準備好冒險改用 Thrift,誰能給我更多的優點/缺點,或者選擇哪種方式的理由?

謝謝!

但它確實提供了一個明顯更小的‑lite)。
  • 在速度方面,它們似乎都很相似。
  • 我還沒有準備好接受投入並切換到 Thrift,誰能給我更多的優點/缺點,或者選擇哪種方式的理由?

    謝謝!

    但它確實提供了一個明顯更小的‑lite)。
  • 在速度方面,它們似乎都很相似。
  • 我還沒有準備好接受投入並切換到 Thrift,誰能給我更多的優點/缺點,或者選擇哪種方式的理由?

    謝謝!


    參考解法

    方法 1:

    As I've said as "Biggest differences of Thrift vs Protocol Buffers?" topic :

    Referring to Thrift vs Protobuf vs JSON comparison :

    Additionally, there are plenty of interesting additional tools available for those solutions, which might decide. Here are examples for Protobuf: Protobuf‑wireshark , protobufeditor.

    方法 2:

    You might want to analyse your need first:

    Do you need a protocol‑agnostic format? For example, do you want to implement a custom protocol or need 100% portability? In such a case use PB.

    If you are fine with the default protocol of Thrift, and you need a protocol to begin with, by all means, go with Thrift.

    Hope this helps.

    方法 3:

    Our project's main reason to stick with Thrift over protocol buffers was that protocol buffers don't auto‑generate a complete RPC server, and existing solutions for PB seemed to all be fairly unstable. Just my $0.02.

    方法 4:

    You need to specify your use case(s) in detail. Else this is a "Which is better, a car or a truck?" question.

    (by please delete meGrzegorz Wierzowieckiawdz9nldalexrasJohn Zwinck)

    參考文件

    1. Thrift vs Protocol buffers (CC BY‑SA 3.0/4.0)

    #protocol-buffers #C++ #thrift #Windows






    相關問題

    通過 Method.invoke() 調用靜態方法給了我 NPE (Static method invocation via Method.invoke() gave me NPE)

    python中的protobuf到json (Protobuf to json in python)

    如何序列化/反序列化使用 ScalaPB 的“oneof”的 protobuf 消息? (How to serialize/deserialize a protobuf message that uses 'oneof' with ScalaPB?)

    序列化和反序列化未知的繼承類型 (Serializing and deserializing unknown inherited types)

    Thrift 與協議緩衝區 (Thrift vs Protocol buffers)

    如何在客戶端排除導入 (How to exclude an import on client side)

    為什麼當我安裝了 Tensorflow 的所有庫後,會出現無目錄錯誤? (Why do I get a no directory error, when I have installed all the libraries for Tensorflow?)

    如何為 C# <proto/> 定義傳遞experimental_allow_proto3_optional 以在proto3 中啟用可選? (How to pass experimental_allow_proto3_optional for C# <proto/> definitions to enable optional in proto3?)

    CentOS7 的 libprotobuf-lite.so 文件在 CentOS8 機器上工作嗎? (is libprotobuf-lite.so file from CentOS7 working in CentOS8 machine?)

    protogen - 支持 <Property> 指定的語法 (protogen - support the <Property>Specified syntax)

    .Net 字典類型在 protobuff (.Net dictionary type in protobuff)

    為什麼 protobuf 更喜歡代碼生成器而不是運行時動態加載 (why protobuf prefer code-generator other than dynamic loading at runtime)







    留言討論