zoukankan      html  css  js  c++  java
  • thrift架构

    thrift的架构主要如下,
    +-------------------------------------------+
    | Server (单线程、事件驱动等) |
    +-------------------------------------------+
    | Processor(由编译器生成) |
    +-------------------------------------------+
    | Protocol(JSON, 压缩等形式) |
    +-------------------------------------------+
    | Transport(TCP, HTTP 等) |
    +-------------------------------------------+

    传输(Transport)

    该层简单抽象了向网络读和写的操作。该层暴露了open、close、read、write、flush接口。在server端会使用ServerTransport对原始类型数据进行接收包含listen、accept、close接口。
    Transport主要有

    • TFileTransport – 以文件形式进行传输。
    • TMemoryInputTransport – 将内存用于I/O
    • TSocket -阻塞式socket
    • TNonblockingSocket -用于异步client的非阻塞式transport

    协议(Protocol)

    该层主要进行数据序列化和反序列化其中包含JSON、XML、文本、压缩格式

    • TBinaryProtocol – 二进制格式.
    • TCompactProtocol – 压缩格式
    • TJSONProtocol – JSON格式
    • TSimpleJSONProtocol –提供JSON只写协议, 生成的文件很容易通过脚本语言解析。
    • TDebugProtocol – 使用易懂的可读的文本格式,以便于debug
    • TCompactProtocol -实现THRIFT-110的协议

    进程(Processor)

    该层封装了从inputstream读和outputstream写的功能。该层只有一个方法TProcessor.process(TProtocol in, TProtocol out)。它是thrift编译器自动生成的。其参数in是用于从网络读取数据,out是用于向网络写数据。

    服务(Server)

    Server将以上组件混合创建transport、input和output的protocol、processor、连接并接受消息

    • TSimpleServer – 简单的单线程服务模型,常用于测试
    • TThreadPoolServer – 多线程服务模型,使用标准的阻塞式IO。
    • TNonblockingServer – 多线程服务模型,使用非阻塞式IO(需使用TFramedTransport数据传输方式)
  • 相关阅读:
    程序员编程武器大盘点
    Opencv 视频转为图像序列
    C/C++ 浮点数比较问题
    C/C++ Swap without using extra variable
    C/C++ Quick Sort Algorithm
    LaTeX 插图片
    LaTeX 基本的公式符号命令
    天龙八部服务器端共享内存的设计(1/3)
    天龙八部服务器端共享内存的设计(2/3)
    天龙八部服务器端共享内存的设计(2/3)
  • 原文地址:https://www.cnblogs.com/resentment/p/7183756.html
Copyright © 2011-2022 走看看