特性:
- 跨语言:支持多种语言之间的RPC调用
- 开发速度快:Thrift提供了完整的RPC调用组件,支持多种网络通信模型。开发者仅仅需要使用IDL完成接口的定义即可。
- 学习成本低:IDL语法简单,很容易学习
- 稳定:在很多开源项目和大型互联网公司中广泛使用。
软件架构:
- Transport:定义了TCP/Http协议,提供了阻塞IO和非阻塞IO
- TProtocal:简单来说负责编解码、提供了二进制、json、压缩格式的编解码
- Processor:将请求委托给对应的业务代码处理(服务端)
- Server:整合上述组件,提供了几种网络通信模型(单线程、多线程、事件驱动)
支持的数据类型:
由于是跨语言的应用,因此需要面向大部分语言都有的数据类型,难以支持一些带有语言特性的数据类型
- 基本数据类型:
- bool
- byte:8位有符号整数
- i16
- i32
- i64
- double:64位浮点数
- string:utf8编码的字符串
- binary:二进制串
- 结构体类型:
- struct:定义的结构体对象
- 容器类型:
- list:有序元素
- set:无序无重复的集合
- map:键值对
- 异常类型:
- exception
- 服务类型:
- serivce:提供服务的类,内部维护了服务的接口。