发展历程
Thrift最初由facebook开发用做系统内各语言之间的RPC通信。
2007年由facebook贡献到apache基金 ,08年5月进入apache孵化器。
目前支持的语言有C++, Java, Python, PHP, Ruby,Erlang, Perl,Haskell, C#, Cocoa, JavaScript,Node.js, Smalltalk, andOcaml,可以在不同语言之间实现C/S RPC调用。
特色
传输数据采用二进制格式,相对XML和JSON体积更小,对于高并发、大数据量和多语言的环境更有优势。
Thrift允许你定义一个简单的定义文件中的数据类型和服务接口,以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言。
例子_Python
首先介绍一个简单的 Thrift 实现实例,使大家能够快速直观地了解什么是 Thrift 以及如何使用 Thrift 构建服务。
创建一个简单的服务 Hello。首先根据 Thrift 的语法规范编写脚本文件 Hello.thrift,代码如下:
struct MessageMeta {
1:i32 mid;
2:string subject;
3:i32 lablel0;
4:string from_where;
5:string to_where;
6:i64 modifiedDate;
7:i64 receivedDate;
8:i64 sentDate;
}
service Hello{
string helloString(1:string para, 2:string para2)
MessageMeta hellowMessage(1:MessageMeta message)
}
其中定义了一个数据结构 MessageMeta,由八个属性,包括INT32、STRING,INT64等类型。
定义了一个服务Hello,包括两个方法,每个方法都定义了参数列表以及返回值类型,每个参数包括参数序号,参数类型以及参数名。
之后在linux下执行 thrift -gen py Hello.thrift。