thrift简介
Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目。Thrift通过一个中间语言(IDL, 接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译器生成不同语言的代码(目前支持C++,Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk和OCaml),并由生成的代码负责RPC协议层和传输层的实现。
Thrift实际上是实现了C/S模式,通过代码生成工具将接口定义文件生成服务器端和客户端代码(可以为不同语言),从而实现服务端和客户端跨语言的支持。
thrift基本语法
基本类型
thrift不支持无符号类型,因为很多编程语言不存在无符号类型。
- byte:有符号字节
- i16:16位有符号整数
- i32:32位有符号整数
- i64:64位有符号整数
- double:64位浮点数
- string:字符串类型
容器类型
Thrift容器与类型密切相关,它与当前流行编程语言提供的容器类型相对应。容器中的元素可以是除了service之外的任何合法thrift类型(包括结构体和异常)。这里有三种可用容器类型。
list<t1> //一系列t1类型的元素组成的有序表,元素可以重复
set<t1> //一系列t1类型的元素组成的无序表,元素唯一
map<t1,t2> //key/value对(key的类型是t1且key唯一,value类型是t2)。
结构体(struct)
Thrift结构体在概念上同C语言结构体类型,是一种将相关属性聚集&