• 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数据传输方式)
  • 相关阅读:
    Java的格式化输出
    常用排序算法的Python实现
    零基础自学用Python 3开发网络爬虫(一)
    Python常见数据结构整理
    百度天气预报API的使用(java版本)
    大总结
    CCS学习(三)
    CSS学习(页外引用还不懂)
    CSS自定义动画
    ssm日期格式转换
  • 原文地址:https://www.cnblogs.com/resentment/p/7183756.html
Copyright © 2020-2023  润新知