Thrift
Alan 2015/06/01
描述
Thrift 是一个软件框架,用来进行可扩展且跨语言的服
务的开发。它结合了功能强大的软件堆栈和代码生成引
擎,以构建在 C++, Java, Python, PHP, Ruby, Erlan
g, Perl, Haskell, C#, Cocoa, JavaScript, Node.js,
Smalltalk, and OCaml 这些编程语言间无缝结合的、
高效的服务。
Thrift 最初由 facebook 开发用做系统内各语言之间的 R
PC 通信 。 2007 年由 facebook 贡献到 apache 基金 , 0
8 年 5 月进入 apache 孵化器 。支持多种语言之间的 RPC
方式的通信: php 语言 client 可以构造一个对象,调用
相应的服务方法来调用 java 语言的服务 ,跨越语言的 C
/S RPC 调用 。
功能
Thrift 允许定义一个简单的定义文件中的数据类型和服
务接口,以作为输入文件,编译器生成代码用来方便地
生成 RPC 客户端和服务器通信的无缝跨编程语言。
组成
Thrift 是一个跨语言的序列化 /RPC 框架,它含有三
个 主 要 的 组 件 : protocol , transport 和
server ,其中, protocol 定义了消息是怎样序列化
的, transport 定义了消息是怎样在客户端和服务器
端之间通信的, server 用于从 transport 接收序列
化的消息,根据 protocol 反序列化之,调用用户定义
的消息处理器,并序列化消息处理器的响应,然后再将
它们写回 transport 。 Thrift 模块化的结构使得它
能提供各种 server 实现
架构
图中黄色部分是用户实现的业务逻辑,褐色部分是根据
Thrift 定义的服务接口描述文件生成的客户端和服务
器端代码框架,红色部分是根据 Thrift 文件生成代
码实现数据的读写操作。红色部分以下是 Thrift 的
传输体系、协议以及底层 I/O 通信,使用 Thrift
可以很方便的定义一个服务并且选择不同的传输协议和
传输层而不用重新生成代码