您的位置:首页 > 其它

Thrift的安装和简单使用

2011-07-05 12:15 507 查看
准备
http://incubator.apache.org/thrift/download/ 下载Thrift的源码包thrift-incubating-0.2.0.tar.gz。
环境
1.遵从POSIX的**NIX系统(笔者使用的是Debian5.0),或者在Windows下安装Cygwin
2.g++ 3.3.5+(http://gcc.gnu.org/)
3.boost 1.33.1+。boost 1.33.1+只是官方要求的安装thrift的最低boost版本,笔者建议你下载一个最新的版本(http://www.boost.org/),因为可能之后使用到的Facebook其他开源框架要求更高版本的boost,而不限于boost.1.33.1。如scribe(facebook的分布式日志服务器),就需要boost1.36+。
4.lex和yacc的运行时库也需要安装
编译thrift源码所需要的工具
1.GNU build tools:autoconf 2.59+ (http://www.gnu.org/software/autoconf/), automake 1.9+(http://www.gnu.org/software/automake/), libtool 1.5.24+(http://www.gnu.org/software/libtool/)
2.pkg-config(http://pkg-config.freedesktop.org/wiki/)
3.lex and yacc (http://dinosaur.compilertools.net/)。已经有flex和bison
所需语言库
C++ :Boost 1.33.1+ ,libevent (可选,用来创建非阻塞服务器) ,zlib (可选)
Java :Java 1.5+ ,Apache Ant ,Apache Ivy,Apache Commons Lang,SLF4J
C#: Mono 1.2.4+ 或者 Visual Studio 2005+
Python: 2.4+
PHP: 5.0+
Ruby: 1.8+
Erlang: R12
Perl 5: Bit::Vector ,Class::Accessor
以上的语言库是看你具体需要thrift生成怎样的语言,并不是必须全部都安装。
配置与编译thrift源码
生成配置脚本

./bootstrap.sh 配置安装参数(这里不作任何配置,使用默认配置)

./configure make thrift
make make install 其中make install是需要root身份的。这样thrift就完成了安装工作
Thrift(http://github.com/facebook/thrift)是一个跨语言服务部署架构,2007年由Facebook开发,之后在2008年加到Apache计划中(http://incubator.apache.org/thrift/)。它是类似于SOAP,CORBA以及Google Protocol Buffers这样的服务架构。Thrift提供了完整client/server RPC的实现,只需要定义好中间定义语言,就可以生成指定语言的代码(包括client和server)。
Thrift能生成的语言有: C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk, and OCaml
使用thrift,以下例子你可以在http://incubator.apache.org/thrift/中找到。
定义.thrift接口文件。

你需要知道thrift所支持的类型(http://wiki.apache.org/thrift/ThriftTypes)
下面是一个简述:
类型描述
booltrue, false
byte8位的有符号整数
i1616位的有符号整数
i3232位的有符号整数
i6464位的有符号整数
double64位的浮点数
stringUTF-8编码的字符串
binary字符数组
struct结构体
list<type>有序的元素列表,类似于STL的vector
set<type>无序的不重复元素集,类似于STL的set
map<type1,type2>key-value型的映射,类似于STL的map
exception是一个继承于本地语言的exception基类
service服务。包含多个函数接口(纯虚函数)
在了解过thrift内置类型之后,我们可以简单地定义一个服务,把用户的信息从前端发送到服务器,然后当需要的时候再从服务器获取某个用户的信息:
struct UserProfile {
1: i32 uid,
2: string name,
}
service UserStorage {
void store(1: UserProfile user),
UserProfile retrieve(1: i32 uid)
}
把以上代码存到 service.thrift文件中。

如果我们需要用python来做输出语言。就在命令行中输入:
thrift  –r  –gen  py  service.thrift
之后,你就会在当前目录下看到一个新建的目录叫”gen-py”,在里面你就可以看到由service.thrift生成的python服务接口代码。
UserStorage.py中的Client就是客户端调用的接口,只需要创建一个Client实例就可以调用例子中的store和retrieve的接口。而Iface就是服务端所需要实现的接口,对应例子中的store和retrieve的逻辑处理。
ttypes.py是存放枚举类型的结构。
UserStorage-remote.py是一个客户端调用服务接口的demo示例,想知道详细的可以去看看。
http://blog.csdn.net/MyOnlyLee/archive/2010/02/04/5289296.aspx
http://blog.csdn.net/MyOnlyLee/archive/2010/02/04/5289380.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: