web-dev-qa-db-ja.com

Thriftvsプロトコルバッファ

私はかなり前からPBを使用していますが、Thriftは常に私の心の奥底にあります。

私が見ているように、節約の主な利点は次のとおりです。

  1. ネイティブコレクション(つまり、ベクター、セットなど)とPBは、似ているがまったく似ていない機能を繰り返し提供します(ドキュメントに「ほとんどの場合は必要ないはずです」と記載されているRepeatedFieldを掘り下げない限り、イテレーターはありません)。
  2. 独自のプラグインをフックするだけでなく、適切なRPC実装が提供されます。
  3. より公式にサポートされている言語(PBはJava、C++、Pythonの「公式」サポートを提供しています)

スリフトの短所:

  1. RPCの実装は、自分の(たとえば)暗号化/認証レイヤーを上にプラグインできないことを意味します。
  2. Windowsのサポートは素晴らしいとは思えません。
  3. PBは間違いなく、よりアクセスしやすいドキュメントを持っているようです。

中性:

  • Windows(Thrift)での.lib /.dllのサイズが不明です。
  • Windowsでの.libのサイズが大きい(PBですが、かなり小さい-liteを提供します)。
  • 速度的には、どちらも似ているようです。

私はまだ思い切ってThriftに切り替える準備ができていませんが、誰かが私にもっと賛否両論、またはいずれかの方法で行く理由を提供できますか?

ありがとう!

43

私が言ったように "ThriftとProtocolBuffersの最大の違いは?" トピック:

参照 Thrift vs Protobuf vs JSON比較

さらに、これらのソリューションで利用できる興味深い追加ツールがたくさんあり、決定する可能性があります。 Protobufの例を次に示します。 Protobuf-wiresharkprotobufeditor

18

最初にニーズを分析することをお勧めします。

プロトコルにとらわれないフォーマットが必要ですか?たとえば、カスタムプロトコルを実装したいですか、それとも100%の移植性が必要ですか?そのような場合はPBを使用してください。

Thriftのデフォルトのプロトコルに問題がなく、必要最初のプロトコルである場合は、必ずThriftを使用してください。

お役に立てれば。

9
awdz9nld

私たちのプロジェクトがプロトコルバッファよりもThriftを使い続ける主な理由は、プロトコルバッファが完全なRPCサーバーを自動生成せず、PBの既存のソリューションがすべてかなり不安定であるように思われたことです。ちょうど私の0.02ドル。

8
alexras

ユースケースを詳細に指定する必要があります。それ以外の場合、これは「車とトラックのどちらが良いですか?」です。質問。

0
John Zwinck