問題描述
Thrift 與協議緩衝區 (Thrift vs Protocol buffers)
我使用 PB 已經有一段時間了,但是 Thrift 一直在我的腦海中。
在我看來,thrift 的主要優勢是:
- 本機集合(即向量、集合等)vs PBs 重複提供的功能類似於但不太像(沒有迭代器,除非您深入研究文檔指出“在大多數情況下不需要")。
- 提供了一個不錯的 RPC 實現,而不僅僅是插入你自己的鉤子。
- 更多官方支持的語言(PB 為 Java、C++、Python 提供“官方”支持)
Thrift 的缺點:
- RPC 實現意味著我可以't 在頂部插入我自己的(例如)加密/身份驗證層。
- Windows 支持似乎不是很好。
- 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 :
- C++, Python, Java ‑ in‑box support in Protobuf and Thrift.
- Protobuf support for other languages (including Lua, Matlab, Ruby, Perl, R, Php, OCaml, Mercury, Erlang, Go, D, Lisp) is available as Third Party Addons (btw. Here is SWI‑Prolog support).
- Protobuf has much better documentation and plenty of examples.
- Protobuf objects are smaller
- Protobuf is faster when unsing "optimize_for = SPEED"
- Thrift has integrated RPC implementation, while for Protobuf RPC solutions are separated, but available (like Zeroc ICE ).
- Protobuf is released under BSD‑style license
- Thrift is released under Apache license
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 me、Grzegorz Wierzowiecki、awdz9nld、alexras、John Zwinck)