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数据传输方式)
  • 相关阅读:
    一个openbsd的服务器,可以使用它的公网IP~
    深入浅出C++虚函数表
    C++函数的高级特性-函数重载
    《用TCP/IP进行网际互联》读书笔记
    C++中const的作用【转】
    C++学习继承中的作用域(10)
    ping 127.0.0.1与本机的IP有什么不同
    C++多态性:虚函数的调用原理
    mysql连接字段
    常用正则表达式
  • 原文地址:https://www.cnblogs.com/resentment/p/7183756.html
Copyright © 2011-2022 走看看