Thrift介绍

来了一个新公司,这家公司不再使用以前的dubbo RPC框架,改用Thrift框架了。经过一段时间的学习,发现Thrift比dubbo支持的语言更多,其他方面感觉并不比dubbo强多少。在这里不过多讨论两者的区别,有兴趣的读者可以留言一起讨论。

thrift是IDL(interface definition language)描述性语言的一个具体实现,根据IDL编写的文件可以使用thrift命令生成相应的代码。

1、数据基本类型

  • bool:布尔值,true or false,对应java的boolean
  • byte:8位有符号整数,对应java的byte
  • i16:16位有符号整数,对应java的short
  • i32:32位有符号整数,对应java的int
  • i64:64位有符号整数,对应java的long
  • double:64位浮点数,对应java的double
  • string:utf-8编码的字符串,对应java的String

2、结构体类型

  • struct:定义公共的对象,类似C语言中的结构体定义,对应java的JavaBean

3、容器类型

  • list:对应java的ArrayList
  • set:对应java的HashSet
  • map:对应java的HashMap

4、异常类型

  • exception:对应java的Exception

5、服务类型

  • service:对应服务的类

7、传输协议

  • TBinaryProtocol:二进制编码格式进行数据传输
  • TCompactProtocol:使用VLQ编码对数据进行压缩
  • TJSONProtocol:使用json的数据编码协议进行数据传输
  • TSimpleJSONProtocol:只提供json只写的协议,适用于通过脚本语言解析
  • TDebugProtocol:在开发过程中帮助开发人员调试使用的,以文本的形式展示方变查看

8、传输层

  • TSocket:使用阻塞式IO传输
  • TFramedTransport:使用非阻塞式传输,以块的形式传输,类似于java的NIO传输
  • TFileTransport:按文件形式的传输
  • TMemoryTransport:使用内存IO
  • TZlibTransport:使用Zlib压缩传输

9、服务端类型

  • TSimpleServer:单线程,使用阻塞式IO
  • TThreadPoolServer:多线程,使用阻塞式IO
  • TNonblockingServer:多线程,使用非阻塞式IO

thrift一些实现的例子可以查看代码https://github.com/jjhpeopl/thriftTest.git

猜你喜欢

转载自jjhpeopl.iteye.com/blog/2323427
今日推荐