thrift说明

Posted sxrtb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thrift说明相关的知识,希望对你有一定的参考价值。

thrift链接:https://www.cnblogs.com/sxrtb/p/12209455.html

一 总体介绍

  thrift中主要文件包括.thrift文件(其中包括访问的接口、接口中的相关字段和异常处理等),服务器端实现.thrift文件中的接口文件(可以处理相关异常),服务器根据thrift协议栈结构所示的方式编写的服务启动文件,客户端根据thrift协议栈结构所示的方式编写的调用服务器端接口的文件。

  技术图片

  这个协议栈结构已经在thrift介绍中说明,而且thrift文件已经进行过说明,现在就客户端和服务器端程序编写进行说明。

  thrift文件中定义了接口可异常,但是接口的信息,异常的返回信息是需要我们服务端进行实现的。所以我们首先需要进行对thrift中定义的接口进行实现。thrift根据需要,可以在Service中定义多个接口,而服务器端有必要对多个接口进行实现。服务器端实现,就只需要implements ServiceName.Iface就行,并编写自己的业务逻辑。

 

  1.Protocal(TProtocal定义了数据传输的格式,的具体具体实现有以下几种)

  技术图片

  TBinaryProtocol为而二进制格式,把各类型转换成 byte 数组,交给 TTransport 传输;

  TCompactProtocol为压缩格式,使用 Variable-Length Quantity(VLQ)编码对数据进行压缩(压缩方法二进制协议类,将 Integer 按 ZigZag 压缩);

  TJSONProtocol为JSON格式;

  TSimpleJSONProtocol提供JSON只写协议,thrift能将内容写出去,但无法解析这个给是的内容,但生产的文件很容易通过脚本语言进行解析,这种协议用得比较少;

  TTupleProtocol是一个final类;

  TProtocolDecorator是一个装饰器;

  TMultiplexedProtocol是TProtocolDecorator的实现,是提供给客户端使用的。具体使用请参看。

   

  2.TTransport传输层

 技术图片

  TSocket 阻塞式socket
  TFramedTransport 以frame为单位进行传输,非阻塞式服务中使用
  TFileTransport 以文件形式进行传输
  TZlibTransport 使用zlib进行压缩,与其他传输方式联合使用
  。。。。
  
  
 3.TServer 服务层

技术图片

  TSimpleServer 简单的单线程服务模型,常用语测试

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

  TNonblockingServer 单线程服务模型,使用费阻塞式IO(需要使用TFramedTransport数据传输方式),底层就是单线程的NIO

  THsHaServer 引入了线程池去处理读写任务,是一种Half-Sync/Half-Async的处理模型,是TNonblockingServer的扩展,也需要使用TFramedTransport数据传输方式。

  TThreadedSelectorServer 也是一种Half-Sync/Half-Async的处理模型,在多核心的环境下,比TNonblockingServer/THsHaServer表现好,也需要使用TFramedTransport数据传输方式。

 

  

 

以上是关于thrift说明的主要内容,如果未能解决你的问题,请参考以下文章

thrift说明

一步步完成thrift rpc示例

window go thrift

以下代码片段 C++ 的说明

如何将 Spark 数据集与 Thrift 一起使用

go thrift oprot.Flush() not enough arguments in