来了一个新公司,这家公司不再使用以前的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
评论