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数据传输方式)
  • 相关阅读:
    《Effective Java》读书笔记
    《Effective Java》读书笔记
    《Effective Java》读书笔记
    使用 @Log4j2 log.error() 打印异常日志
    获取min-max之间的随机数
    跨域问题(CORS / Access-Control-Allow-Origin)
    SnowFlakeId 分布式雪花id算法
    订单入库后异步推送
    查看git HEAD
    Java Http POST/GET 情求
  • 原文地址:https://www.cnblogs.com/resentment/p/7183756.html
Copyright © 2011-2022 走看看