thrift笔记
thrfit是Fackbook于2007年提出的一种RPC框架,可以跨语言,提供了多语言的编译功能和多服务器工作模式, 通过IDL(接口定义语言)来描述接口函数和数据类型,然后通过Thrift的编译环境生成各语言的接口文件。
Thrift为Server端提供了很多的工作模式,用户可以根据实际应用场景选择一种模式对外提供服务
-
Thrift提供的传输格式
1.1 TBinaryProtocol - 二进制格式
1.2 TCompactProtocol - 压缩格式
1.3 TJSONProtol - JSON格式
1.4 TSimpleJSONProtocol - 提供JSON只写协议,生成的文件很容易通过脚本语言解析
1.5 TDebugProtocol - 使用可读的文本格式,便于debug
-
支持的数据传输方式
2.1 TSocket - 阻塞式socket
2.2 TFramedTransport – 以frame为单位进行传输,非阻塞式服务中使用
2.3 TFileTransport – 以文件形式进行传输
2.4 TMemoryTransport – 将内存用于I/O. java实现时内部实际使用了简单的ByteArrayOutputStream
2.5 TZlibTransport – 使用zlib进行压缩, 与其他传输方式联合使用。当前无java实现
-
支持的Server模型
3.1 TSimpleServer – 简单的单线程服务模型,常用于测试
3.2 TThreadPoolServer – 多线程服务模型,使用标准的阻塞式IO
3.3 TNonblockingServer – 多线程服务模型,使用非阻塞式IO(需使用TFramedTransport数据传输方式)
在Thrift的调用过程中,从Client到Server之间需要经过 传输层类、协议层类和处理类三个主要的核心类,这三个类的相互协作共同完成整个RPC的调用过程,