码迷,mamicode.com
首页 > 其他好文 > 详细

Thrift 源码学习一

时间:2018-01-28 18:17:21      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:span   struct   processor   ble   ssl   nload   syn   线程阻塞   各类   

Thrift 客户端与服务端的交互图

技术分享图片 

源码结构

技术分享图片

  1. 传输层 TTransport:

    1. TTransport:客户端传输层抽象基础类,read、write、flush、close 等方法

    2. TSocket 与 TNonBlockingSocket:分别是基于 BIO 和 NIO 客户端传输类

    3. TServerSocket 与 TNonBlockingServerSocket:分别是基于 BIO 和 NIO 服务端传输类

    4. TZlibTransport:

    5. TSaslClientTransport 与 TSaslServerTransport:提供 SSL 校验

  2. 协议层 Protocol:

    1. TBinaryProtocol:二进制流传输协议类,把各类型转换成 byte 数组,交给 TTransport 传输

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

    3. TTupleProtocol:继承自 TCompactProtocol,Struct 使用时更省空间

    4. TJSONProtocol:JSON 格式协议类,将数据封装成 JSON 格式,再转成 byte 数组交给传输层

    5. TSimpleJSONProtocol:JSON 格式协议类,但只支持写的功能

  3. 处理层 Processor:

    1. TProcessor:基础接口,process(TProtocol in, TProtocol out)

    2. TBaseProcessor:基础抽象类,持有 processMap 对象,key 为方法名,value 为方法

    3. Processor:由声明的 IDL 生成,实现 TProcessor 接口并继承了 TBaseProcessor 类

    4. TAsyncProcessor:异步处理接口

    5. TBaseAsyncProcessor:异步处理抽象类

    6. AsyncProcessor:由声明的 IDL 生成,实现 TAsyncProcessor 接口并继承 TAsyncProcessor 类

  4. 服务层 Server:

    1. TServer:基础抽象类,类似一个容器,持有 TProcessor、TTransport、TProtocol 的工厂对象,提供 server() 方法,用于启动服务,stop() 用于停止服务

    2. TSimpleServer:单线程阻塞式服务

    3. TNonblockingServer:支持非阻塞单线程服务模型,基于 NIO 的 select 实现

    4. TThreadPoolServer:专门的线程接受请求并交给线程池处理,阻塞式线程池模型

Thrift 源码学习一

标签:span   struct   processor   ble   ssl   nload   syn   线程阻塞   各类   

原文地址:https://www.cnblogs.com/zhengbin/p/8371676.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!