本篇只是在實際中使用的一個例子,thrift具體的源碼分析請參考網上其它同行的高見。可以參考:http://www.ibm.com/developerworks/cn/java/j-lo-apachethrift/。在使用的過程中發現,thrift的一個客戶端不是線程安全的,如果有多個線程同時請求信息就會報錯。我加了一個thrift客戶端連接池,每個線程可以從thrift客戶端連接池中獲取一個thrift客戶端。這個thrift客戶端連接池是基本common-pool2實現的(關於common-pool2詳細可以參考:http://www.youxijishu.com/h-nd-152-2_323.html)。
一,下載安裝包和Java依賴包
http://thrift.apache.org/download
(1)Java項目maven 引用:
<dependency>
<groupId>org.apache.thrift</groupId>
<artifactId>libthrift</artifactId>
<version>0.9.3</version>
</dependency>
(2)windows編譯工具
http://www.apache.org/dyn/closer.cgi?path=/thrift/0.9.3/thrift-0.9.3.exe
二,thrift文件編寫
thrift是跨平台的rpc工具,所以它類似與protobuffer,有一個定義格式的腳本IDL語言,需要手動編寫,可以參考:http://thrift.apache.org/docs/types,上面有它支持的數據類型。編寫好之后(這里有一個官方的IDL語言例子:https://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob_plain;f=test/ThriftTest.thrift;hb=HEAD),使用thrift-0.9.3.exe生成相應的平台代碼。我們這里使用的是Java。
三,簡單通信的例子
1,.thrift文件
namespace java yhhx.rpc.impl
service LoginServerRpc {
bool isLogin(1:i64 userId,2:string token)
}
這個游戲邏輯服務器是向登陸服務器請求驗證這個游戲玩家是否登陸了的一個rpc調用。
2,生成類
運行工具:thrift-0.9.3.exe -r --gen java UserService.thrift
3,實際調用
本來是貼代碼的,發現代碼太多了,有點湊頁的嫌疑。就壓縮了一個包,有需要的可以去下載。這個源碼沒有加完成的包結構,只是純粹的代碼,代碼類也不是太多,供參考使用。
更多游戲技術資料請參照:游戲技術網http://www.youxijishu.com/