本文へスキップ

Apache Thriftとは?

あぱっちすりふと

Apache Thriftとは、複数プログラミング言語にまたがるサービス間通信を効率化するための、コード生成ツールとシリアライゼーションフレームワークです。

Apache Thriftは、Facebookが開発しApache Software Foundationに寄贈したRPCフレームワークおよびデータシリアライゼーションライブラリです。IDL(インターフェース定義言語)でサービスのインターフェースとデータ型を記述すると、C++・Java・Python・PHP・Ruby・Go・Rustなど多数の言語向けのクライアント・サーバコードを自動生成します。

Thriftの仕組みは大きく三つの層から構成されています。

  • トランスポート層:TCPソケット・HTTPなど通信手段を抽象化する
  • プロトコル層:バイナリ・コンパクトバイナリ・JSONなど複数のシリアライゼーション形式を選択できる
  • プロセッサ層:IDLから生成されたサーバ側処理のディスパッチ機構

ThriftのIDLは.thriftファイルに記述し、structでデータ型を、serviceでRPCメソッドを定義します。フィールドには番号が付与されており、後方互換性を保ちながらスキーマを進化させることができます。

Google ProtocolBuffers(gRPC)と比較されることが多く、どちらも多言語対応のバイナリRPCフレームワークですが、Thriftはトランスポート・プロトコルの選択肢が豊富で柔軟性が高い一方、gRPCはHTTP/2とProtobufに特化してエコシステムが充実しています。Thriftは大規模なマイクロサービスアーキテクチャを持つ企業(Facebook・Twitter・Evernoteなど)での採用実績があります。

使い方・例文

Thriftを使うと、Javaで実装した検索サービスのAPIをPythonクライアントから型安全に呼び出せるコードが.thriftファイルから自動生成されます。異なる言語で書かれたマイクロサービスを効率よく連携させる場面で活躍します。

この用語をシェア

𝕏 でポスト LINE

最終更新:

関連用語