thrift笔记

thrfit是Fackbook于2007年提出的一种RPC框架,可以跨语言,提供了多语言的编译功能和多服务器工作模式, 通过IDL(接口定义语言)来描述接口函数和数据类型,然后通过Thrift的编译环境生成各语言的接口文件。

Thrift为Server端提供了很多的工作模式,用户可以根据实际应用场景选择一种模式对外提供服务

  1. Thrift提供的传输格式

    1.1 TBinaryProtocol - 二进制格式

    1.2 TCompactProtocol - 压缩格式

    1.3 TJSONProtol - JSON格式

    1.4 TSimpleJSONProtocol - 提供JSON只写协议,生成的文件很容易通过脚本语言解析

    1.5 TDebugProtocol - 使用可读的文本格式,便于debug

  2. 支持的数据传输方式

    2.1 TSocket - 阻塞式socket

    2.2 TFramedTransport – 以frame为单位进行传输,非阻塞式服务中使用

    2.3 TFileTransport – 以文件形式进行传输

    2.4 TMemoryTransport – 将内存用于I/O. java实现时内部实际使用了简单的ByteArrayOutputStream

    2.5 TZlibTransport – 使用zlib进行压缩, 与其他传输方式联合使用。当前无java实现

  3. 支持的Server模型

    3.1 TSimpleServer – 简单的单线程服务模型,常用于测试

    3.2 TThreadPoolServer – 多线程服务模型,使用标准的阻塞式IO

    3.3 TNonblockingServer – 多线程服务模型,使用非阻塞式IO(需使用TFramedTransport数据传输方式)

在Thrift的调用过程中,从Client到Server之间需要经过 传输层类、协议层类和处理类三个主要的核心类,这三个类的相互协作共同完成整个RPC的调用过程,

Written on June 14, 2019