本篇只是在实际中使用的一个例子,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)。html
一,下载安装包和Java依赖包java
http://thrift.apache.org/downloadgit
(1)Java项目maven 引用:apache
<dependency>windows
<groupId>org.apache.thrift</groupId>安全
<artifactId>libthrift</artifactId>服务器
<version>0.9.3</version>maven
</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/