美文网首页
Thrift基础

Thrift基础

作者: 图图图_a092 | 来源:发表于2018-03-06 15:50 被阅读0次

1.概述

Apache Thrift是一个多语言并存的异构系统之间的RPC调用方案,当然也可以作为同构系统之间的RPC方案。

2.优势

对比XML-RPC/JSON-RPC/SOAP与WSDL协议栈实现的RPC方案,有着非常明显的性能优势,原因在于,Thrift是采用二进制编码协议,使用TCP/IP传输协议的一种RPC实现,而XML-RPC/JSON-RPC/SOAP与WSDL协议栈采用文本协议,WSDL的实现WebService采用HTTP作为传输协议,对于网络数据传输,TCP/IP协议的性能要高于HTTP协议,不仅因为HTTP协议是应用层协议,HTTP协议传输内容除了应用数据本身之外,还有响应状态码、Header信息等。

3.执行流程

Thrift调用整体流程

Transport:数据传输层

1.TSocket与TIOStreamTransport基于阻塞I/O模型实现,每次请求独占一个连接,效率比较低

2.TnonblockingTransort、TNonblockingSocket这两个类对应着非阻塞I/O实现。

3.TMemoryInputTransport封装了一个字节数组byte[]来做输入流的封装,TMemoryBuffer使用字节数组输出流ByteArrayOutputStream做输出流的封装

4.TFramedTransport则封装了TMemoryInputTransport做输入流,封装TByteArrayOutPutStream做输出流,作为内存读写缓存区的一个封装

5.TFastFramedTransport是内存利用率更高的一个内存读写缓存区,它使用自动增长的byte[](长度不够才新建),而不是每次都新建一个byte[],提高了内存使用率

Protocol:数据传输协议

1.TbinaryProtocol:二进制格式传输协议

2.TCompactProtocol:压缩二进制格式传输协议

3.TJSONProtocol:JSON格式传输协议

4.TSimpleJSONProtocol:简单的JSON格式数据传输协议

5.TDebugProtocol:调试时使用的文本传输协议

Processor:处理器

Thrift通过使用编写的Thrift IDL描述文件来自动生成Processor,它从负责从输入的Protocol读取数据,将其传递给处理程序,并将结果发送到负责输出的Protocol

相关文章

  • Thrift基础

    1.概述 Apache Thrift是一个多语言并存的异构系统之间的RPC调用方案,当然也可以作为同构系统之间的R...

  • thrift基础介绍

    Thrift是一种接口描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务。它被当作一个远程过程调用(RPC...

  • Thrift RPC 系列教程(1)——Thrift语言

    基础数据类型 Thrift 这门编程语言提供了如下几种基础的数据类型: bool: A boolean value...

  • 小白入门微服务(1) - RPC 初体验,python、node

    概述 前言 什么是 RPC RPC 原理 常用 RPC 框架对比 thrift 基础 python、nodejs ...

  • 开发资料

    通用 MarkDown Git GitFlow Thrift YAML 基础算法 codility强烈建议刷完所有...

  • Thirft

    一、About thrift二、什么是thrift,怎么工作?三、Thrift IDL四、Thrift D...

  • Docker&k8s微服务学习实践(二)

    一、下载配置thrift 从Thrift官网 http://thrift.apache.org/ 下载thrift...

  • thrift 指南

    /usr/local/opt/thrift@0.9/bin/thrift -gen java a.thrift会在...

  • Thrift学习

    Thrift源码剖析 Thrift源码分析及一个完整的例子 CSDN Thrift源码分析 Thrift二进制序列...

  • thrift 简介

    thrift 基本概念、数据类型thrift 简介一 thrift 基本类概述、序列化协议thrift 简介二 t...

网友评论

      本文标题:Thrift基础

      本文链接:https://www.haomeiwen.com/subject/gzmlfftx.html