Apache Thrift的簡單使用

 

Apache Thrift的簡單使用

----------------------php

 

1. 簡介

Thrift是Facebook的一個開源項目,主要是一個跨語言的服務開發框架。它有一個代碼生成器來對它所定義的IDL定義文件本身主動生成服務代碼框架。用戶僅僅要在其以前進行二次開發便可,對於底層的RPC通信等都是透明的。眼下它支持的語言有C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk, and OCaml.java

 

2. 下載與安裝

可以在http://incubator.apache.org/thrift/download/去下載它的最新版本號,眼下最新版本號是0.5.0。另外你也可以check出它的svn,方法例如如下:python

svn co http://svn.apache.org/repos/asf/thrift/trunk thriftc++

cd thriftapache

 

在它的jira中看到,它的0.6版本號也很是快就會出來了。ubuntu

 

個人本本是debian 6.0,假設用ubuntu的兄弟安裝方法也是同樣的ruby

 多線程

 

這時thrift的代碼生成器和一些庫文件就生成好了。框架

 

你可以用例如如下命令看一下thrift的版本號信息socket

 

 

 

3. 一個簡單的樣例

在thrift源碼文件夾有一個叫tutorial的文件夾,進行當中後執行thrift命令生成對應的服務代碼:

 

 

執行完以後會在當前文件夾看到一個gen-cpp文件夾,當中就是thrfit命令生成的代碼

 

這時你cd到tutorial/cpp文件夾,執行make,生成對應的CppServer與CppClient程式。

 

這時你可以用./CppServer執行服務端,讓其監聽一個特定的port

 

這時你可以用./CppClient執行client程式,讓其去鏈接服務端,調用其所相應的服務。默認調用後會輸出例如如下信息:

 

 

 

假設你的終端中也出現瞭如上的信息,恭喜你,執行成功了。假設在執行CppServer的時候找不到動態庫,看看你是否是執行了make install,假設執行了,再執行一下sudo ldconfig試試。再用ldd CppServer看一下它有沒有找到對應的動態庫了。

 

4. 樣例分析

 

4.1 Thrift IDL的分析

 

這邊有兩個IDL文件,內容例如如下:

 

 

 

4.2 服務端與client代碼的分析

   4.2.1 c++服務端

   在tutorial/cpp文件夾中的CppServer.cpp是它的服務代碼,主要分紅兩部分,

   一部分是main方法用於作一些初始化與服務的啓動,第二部分對於IDL中定義的接口的實現

  

 

 

還有一部分例如如下:

 

4.2.2 c++client

 

4.2.3 其餘代碼的實現

在tutorial文件夾中有其餘代碼的樣例,如erl,java,python,perl,ruby等。

 

5 參考

1. http://incubator.apache.org/thrift/

2. http://incubator.apache.org/thrift/static/thrift-20070401.pdf

相關文章
相關標籤/搜索