Apache Thrift是一個facebook建立的RPC框架,現在是一個Apache的頂級項目。Thrift允許通過一個跨語言的定義文件的方式定義數據類型和服務接口,這個文件作為RPC客戶端和服務器通信的標准,你也可以去看看Thrift的白皮書了解更多信息。
根據Apache Thrift的官方站點的描述,Thrift是一個:
software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi and other languages.
安裝Thrift比較的煩,但是在Windows下官方編譯了一個thrift.exe,下載安裝就行了。
寫 Thrift定義文件(.thrift file)
如果你之前有接觸過這個東西的話,寫定義文件非常的簡單。但這裡可以參考官方的教程快速開始。
示例定義文件(add.thrift)
namespace java com.eviac.blog.samples.thrift.server // defines the namespace
typedef i32 int //typedefs to get convenient names for your types
service AdditionService { // defines the service to add two numbers
int add(1:int n1, 2:int n2), //defines a method
}
編譯Thrift定義文件
下面的命令編譯.thrift文件
thrift --gen <language> <Thrift filename>
對於我的例子來講,命令是:
thrift --gen java add.thrift
在執行完代碼後,在gen-java目錄下你會發現構建RPC服務器和客戶端有用的源代碼。在我的例子中我將創建一個叫做AddtionService.java的java文件。