、thrift 简介
它是一款RPC通信框架,采用C/S架构,且拥有高效的序列化机制。要使用Thrift,首先我们需要在远端服务器上开启Thrift服务,之后,服务器端进程保持睡眠状态,直到客户端代码的调用。
Thrift应用广泛的一个主要原因是它支持多种主流的语言,且使用它的用户不需要关注服务器和客户端是怎样实现通信,怎样实现序列化的,只需要去考虑怎样实现自己需要的业务逻辑。
Thrift使用接口语言定义数据结构和服务,包含了最常用的数据类型,并一一对应各种语言的基本类型,还可以定义枚举和异常等等。
1.1、 Thrift是什么?能做什么?
Thrift是Facebook于2007年开发的跨语言的rpc服框架,提供多语言的编译功能,并提供多种服务器工作模式;用户通过Thrift的IDL(接口定义语言)来描述接口函数及数据类型,然后通过Thrift的编译环境生成各种语言类型的接口文件,用户可以根据自己的需要采用不同的语言开发客户端代码和服务器端代码。
例如,我想开发一个快速计算的RPC服务,它主要通过接口函数getInt对外提供服务,这个RPC服务的getInt函数使用用户传入的参数,经过复杂的计算,计算出一个整形值返回给用户;服务器端使用java语言开发,而调用客户端可以是java、c、python等语言开发的程序,在这种应用场景下,我们只需要使用Thrift的IDL描述一下getInt函数(以.thrift为后缀的文件),然后使用Thrift的多语言编译功能,将这个IDL文件编译成C、java、python几种语言对应的“特定语言接口文件”(每种语言只需要一条简单的命令即可编译完成),这样拿到对应语言的“特定语言接口文件”之后,就可以开发客户端和服务器端的代码了,开发过程中只要接口不变,客户端和服务器端的开发可以独立的进行。
Thrift为服务器端程序提供了很多的工作模式,例如:线程池模型、非阻塞模型等等,可以根据自己的实际应用场景选择一种工作模式高效地对外提供服务;
1.2、 Thrift的相关网址和资料:
(1) Thrift的官方网站:http://thrift.apache.org/
(2) Thrift官方下载地址:http://thrift.apache.org/download
(3) Thrift官方的IDL示例文件(自己写IDL文件时可以此为参考):
https://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob_plain;f=test/ThriftTest.thrift;hb=HEAD
(4) 各种环境下搭建Thrift的方法:
http://thrift.apache.org/docs/install/
该页面中共提供了CentOS\Ubuntu\OS X\Windows几种环境下的搭建Thrift环境的方法。
二、thrift 环境搭建
1.1 windows 环境搭建
thrift.exe下载地址:http://archive.apache.org/dist/thrift/0.9.0/,版本可自选。
下载*.exe后,新建文件夹thrift,将*.exe放入文件夹,将文件夹的路径添加到环境变量。(说明:文件夹名称随意,只是为了方便后期操作起名为thrift)
打开cmd窗口,输入thrift -version,显示如下图说明安装成功:
1.2 java环境搭建
在java环境下开发thrift的客户端或者服务器程序非常简单,只需在工程文件中加上下面三个jar包
需要下载:
libthrift.jar 、slf4j-api.jar 、slf4j-simple.jar
注意:libthrift.jar的版本要与windows环境变量添加的*.exe版本一致,否则运行时会出现错误。
下面以IDEA为例,说明如何添加jar:
file → Project Structure
Modules → “+” → “JARs or Directories”
1.3 python 环境搭建
安装thrift:pip install thrift
卸载thrift:pip uninstall thrift
安装特定版本的package
通过使用==, >=, <=, >, <来指定一个版本号。
$ pip install 'thrift<2.0'
$ pip install 'thrift>2.0,<2.0.3'