thrift 是一个跨语言的通讯框架,支持c++, java, .net, python,php等。你可以用一种语言写一个服务器,然后另外一种语言写一个客户端,快速搭建一个rpc调用服务。而且它很轻量级,只要引入特定库便可以运行服务和客户端,不需要再安装配置其它复杂的环境和容器。
下面介绍如何在ubuntu11.10上安装thrift0.8.0。
1. 下载thrift,页面http://thrift.apache.org/download/里有相应链接。
我下的是0.8.0:
wget http://labs.renren.com/apache-mirror//thrift/0.8.0/thrift-0.8.0.tar.gz
2. 解压:
tar -zxf thrift-0.8.0.tar.gz
cd thrift-0.8.0
3. 安装依赖:
sudo apt-get install libboost-dev automake libtool flex \
bison pkg-config g++ autoconf autotools-dev flex libtool byacc
4. ./configure && make && make install
上面如果没出什么问题的话就安装好了。
注意:如果是安装thrift-0.9.0,则需要把qt功能关掉,否则会出错。,
另外如果在ubuntu下面安装,在make install的适合可能会遇到权限问题,因为需要复制一些文件到系统目录,所以需要sudo。
./configure --with-qt4=no && make && sudo sudo make install
下面我们用python简单的测试一下是否安装成功。
1. 首先构建python的thrift库:
cd lib/py
sudo python setup.py install
2. 生成python例子的相关代码:
cd http://www.cnblogs.com/tutorial
thrift --gen py thrift.thrift
thrift --gen py shared.thrift
cp py/* gen-py
cd gen-py
3.运行例子:
python PythonServer.py &
python PythonClient.py
我运行的时候报错,说getaddrinfo参数类型错误。看了一下源码,发现TSocket类的构造方法第一个参数是host,第二个是port。二PythonServer.py代码里面只给了一个参数,是端口9090。TSocket构建的时候将端口当成了host,类型不对,所以报错。将PythonServer.py的84行改一下就好了》
老的:transport = TSocket.TServerSocket("localhost",9090)
新的:transport = TSocket.TServerSocket(9090)
好了,收功了,以后我会讲一下如何用java搭建服务,php调用。