标签:selectors href 传输层 server 调用 各类 通过 frame 编写
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数据传输方式。
标签:selectors href 传输层 server 调用 各类 通过 frame 编写
原文地址:https://www.cnblogs.com/sxrtb/p/12288043.html