web-dev-qa-db-ja.com

なぜTh約、なぜHTTP RPC(JSON + gzip)ではないのか

Thriftの主な目標は、プログラミング言語間で効率的で信頼性の高い通信を可能にすることです。しかし、HTTP-RPCもそれを行うことができると思います。Web開発者はほとんど誰もがhttpで作業する方法を知っており、ThriftよりもHTTP-RPC(json)を実装する方が簡単です。

Thrift-RPCの方が高速かもしれませんが、それらのパフォーマンスの違いを教えてくれる人はいますか?

52
jebbthe

速度以外のいくつかの理由:

  1. Thriftは、渡すデータ構造を含め、クライアントとサーバーのコードを完全に生成するため、ハンドラーを作成してクライアントを呼び出す以外に対処する必要はありません。パラメータや戻り値を含むすべてが自動的に検証および解析されます。あなたは無料でデータの健全性チェックを取得しています。

  2. ThriftはHTTPよりもコンパクトであり、暗号化、圧縮、非ブロッキングIOなどをサポートするように簡単に拡張できます。

  3. Thriftは、必要に応じて簡単にHTTPとJSONを使用するようにセットアップできます(クライアントがインターネット上のどこかにあり、ファイアウォールを通過する必要がある場合)

  4. Thriftは永続的な接続をサポートし、HTTPが引き起こす連続的なTCPおよびHTTPハンドシェイクを回避します。

個人的に、外部からの接続が必要な場合は、内部LAN RPCとHTTPにthriftを使用します。

これがすべてあなたにとって意味があることを願っています。ここでrif約についてのプレゼンテーションを読むことができます:

http://www.slideshare.net/dvirsky/introduction-to-thrift

それはth約への他のいくつかの代替へのリンクを持っています。

94
Not_a_Golfer

さまざまなシリアライザーのパフォーマンス比較に関する優れたリソースを次に示します。 https://github.com/eishay/jvm-serializers/wiki/

特にThrift対JSONについて言えば、Thriftのパフォーマンスは最高のJSONライブラリ(ジャクソン、プロトタイプ)に匹敵し、シリアル化されたサイズはいくぶん低くなります。

IMO、最も強力な節約の利点は、便利な相互運用可能なRPC呼び出しとバイナリデータの便利な処理です。

5
Wildfire