Apache Thrift是一個facebook創建的RPC框架,如今是一個Apache的頂級項目。Thrift容許經過一個跨語言的定義文件的方式定義數據類型和服務接口,【這個文件】做爲【RPC】客戶端和服務器通訊的標準php
①安裝依賴:$ yum install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel zlib-devel python-devel ruby-devel
②安裝thrift:
下載:$ wget http://archive.apache.org/dist/thrift/0.9.0/thrift-0.9.0.tar.gz
解壓:$ tar zxvf thrift-0.9.0
運行:$ cd thrift-0.9.0
$ ./bootstrap.sh
$ ./configure
$ make
$ make install
③安裝handle基類:
$cd ./contrib/fb303/
$./bootstrap.sh
$./configure
$make
$make install
④驗證:$ thrift -version
thrift version 0.9.0java
thrift經常使用命令:
thrift -r -gen cpp UserFileIdentify.thrift (c++)
thrift -r -gen java UserFileIdentify.thrift (java)
thrift -r -gen java UserFileIdentify.thrift (php)python
一個栗子(在10.0.0.40下)--------------------------------c++
dev@DEV101:~/pzhang$ rm -rf gen-java
dev@DEV101:~/pzhang$ ls
gen-php UserFileIdentify.thrift
dev@DEV101:~/pzhang$ thrift -r -gen java UserFileIdentify.thrift
dev@DEV101:~/pzhang$ ls
gen-java gen-php UserFileIdentify.thrift
dev@DEV101:~/pzhang$ cd gen-java/
dev@DEV101:~/pzhang/gen-java$ ls
ReceivedTRT.java UpdateValueByTableThriftService.javaapache
(1)基本概念
Thrift中的幾個概念:
Server 服務模型
Handler 數據處理接口
Processor 數據處理對象
Protocol 數據傳輸協議
Transport 數據傳輸方式bootstrap
(2)支持的傳輸格式
TBinaryProtocol – 二進制格式.
TCompactProtocol – 壓縮格式
TJSONProtocol – JSON格式
TSimpleJSONProtocol –提供JSON只寫協議, 生成的文件很容易經過腳本語言解析。
TDebugProtocol – 使用易懂的可讀的文本格式,以便於debug
(3) 支持的通訊方式(數據傳輸方式)(Transport)
TFileTransport:文件(日誌)傳輸類,容許client將文件傳給server,容許server將收到的數據寫到文件中。
THttpTransport:採用Http傳輸協議進行數據傳輸
TSocket:採用TCP Socket進行數據傳輸
TZlibTransport:壓縮後對數據進行傳輸,或者將收到的數據解壓ruby
(4)客戶端編寫的通常步驟:
1. 建立Transport
2. 建立Protocol方式
3. 基於Transport和Protocol建立Client
4. 運行Client的方法服務器
==========================================一個demo======================================================框架