一、Thrift简介
Thrift是一种可扩展跨语言的服务开发框架,最初用于facebook内部系统各个语言之间的RPC通信,目前已由facebook提交到apache。Thrift作为一个高性能的RPC框架,可以满足企业对于高并发访问的需要,同时,thrift的编程模型相对简单,也能够提高服务开发的效率。因此,很多公司都采用thrift作为其基础通信组件。
Thrift的官方网站:http://thrift.apache.org/
二、Thrift的核心组件
在学习Thrift的核心组件之前,我们有必要从其功能方面着手,理解各个组件的功能,这有利于我们对于Thrift整体的理解。
Thrift作为一种RPC框架,具备了RPC框架的基本组件,当然也遵循了RPC框架的功能目标。
借用一下官方的正式说法:RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。
翻译成通俗一点的语言就是,在进行远程调用时,能够像本地调用一样方便,让调用者对远程调用的逻辑无感知。
1、TProtocol 协议和编解码组件
要实现客户端(本地调用者)和服务器(远程被调用者)的通信,需要在双方之间约定一系列的协议。我们要定义好通信所传输的数据——消息。在进行通信之前,发送方必须要将要传输的数据结构转换成字节流,也就是说,发送方需要对发送的消息进行编码,同样,接收方也需要对接收到的消息进行解码。编解码定义了将数据在数据结构和字节流之间进行互相转换的规范。
Thrift中,协议和编解码被整合在了一起。
2、IDL组件
前面提到过,Thrift是一种跨语言的服务开发框架。跨语言的实现,依赖于IDL(Interface Deifnition Language)组件,IDL组件的作用就是将服务接口编译成不同语言编写的代码。
3、TProcessor 服务调用组件
客户端将消息发送给服务端,服务器接收到消息,对消息进行解码,通过方法调用模型完成服务端方法的调用。
4、TTransfer 传输层
在网络编程中,thrift会封装一层传输层来支持底层的网络通信。
5、TServer 服务器组件
在thrift中,TServer是作为服务器的抽象,能够提供多种类型的服务器实现。具体又可分为:非阻塞IO的server和同步的server。
6、Client 客户端组件
三、安装配置
(一)windows平台安装与配置
1、下载thrift 下载地址:
2、在要安装的路径下新建一个thrift文件夹,将下载的thrift-X.X.X.exe重命名为thrift.exe,copy到新建的thrift文件夹。
3、在环境变量path中添加thrift.exe的路径,我的是:D:\SoftWare\thrift
4、Ctrl+R 输入cmd,输入thrift -version,如果显示thrift版本信息,代表安装成功。
(二)mac OS平台安装与配置
1、在官网下载安装包:http://thrift.apache.org/download 最新版本为0.11.0
2、解压到需要安装的目录,然后:
(1) cd thrift-0.11.0
(2) ./configure
(3) make
(4) make install
3、可能遇到的问题:
Bison version 2.X or higher must be installed on the system!
该问题是因为mac默认安装的Bison版本过低,此时需要进行以下操作:
brew install bison
cd /Library/Developer/CommandLineTools/usr/bin/bison //将系统默认安装bison的路径
sudo mv bison bison123 //将系统默认安装的bison重命名为任意一个名字
sudo cp /usr/local/opt/bison/bin/bison /Library/Developer/CommandLineTools/usr/bin/ //将新安装的bison拷贝到系统默认安装bison路径下