thrift原理是什么

本篇内容主要讲解“thrift原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“thrift原理是什么”吧!

10余年的西丰网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整西丰建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“西丰网站设计”,“西丰网站推广”以来,每个客户项目都认真落实执行。

简介

  • Thrift是一款Facebook开发的rpc框架( remote procedure call),并且已经加入到Apache项目。

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

RPC介绍

可以用一张图体现:

thrift原理是什么

Thrift工作流程

  1. 设计所需要的服务

  2. 根据设计的服务,编写Thrift IDL服务描述文件

  3. 根据编写的Thrift IDL服务描述文件使用Thrift提供的代码生成工具生成服务端与客户端的代码

  4. 实现服务端业务逻辑的编写,同时实现客户端调用代码的编写

  5. 运行服务端与客户端

Thrift内部运行

Thrift运行时的网络堆栈包括Transport、Protocol、Processor、Server四个部分。如下图所示:

thrift原理是什么

Transport

  • Transport:提供了通过网络读写数据的方法;

  • Thrift 源码中,则是通过将 socket 包装成各种 Transport 来使用

  • java实现方式:

    a、TSocket与TIOStreamTransport基于阻塞I/O模型;

    b、TnonblockingTransort、TNonblockingSocket基于非阻塞模型;

    c、TMemoryInputTransport、TMemoryBuffer基于字节数组作为输入输出流的封装;

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

Protocol

  • Transport:提供了对网络传输数据进行序列化/反序列化的具体实现

  • java实现方式:

    a、TbinaryProtocol:二进制格式传输协议

    b、TCompactProtocol:压缩二进制格式传输协议

    c、TJSONProtocol:JSON格式传输协议

    d、TSimpleJSONProtocol:简单的JSON格式数据传输协议

    e、TDebugProtocol:调试时使用的文本传输协议

  •  protocol 就是 transport 的上一层。 transport 负责数据传输, 但是要使得程序知道传输的数据具体是什么, 还得靠 protocol 这个组件来对数据进行解析, 解析成对应的结构代码供程序直接调用。

Processor

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

  • Processor:通过 transport 和 protocol 这两层之后, 程序已经可以获得对应的数据结构,但是数据结构需要被使用才有价值。 在 Thrift 里面,就是被 processor调用。

Server

  • Server将Transport、Protocol、Processor组合在一起,将服务运行起来,在指定的端口等待调用端的请求

  • java实现方式:

    a、TnonblockingServer:基于多线程非阻塞I/O模型实现,适用于连接数较多的高并发环境

    b、TthreadPoolServer:基于多线程阻塞I/O模型实现,比TNonblockingServer需要耗费更多的系统资源

    c、ThsHaServer:半同步、异步服务器

    d、TsimpleServer:基于单线程的阻塞I/O模型实现,主要用于测试,不推荐在生产环境中使用

Client

  • 一个同步调用的客户端Client,一个异步调用的客户端AsyncClient

thrift原理是什么

thrift原理是什么thrift原理是什么

thrift原理是什么

Thrift数据类型

thrift原理是什么

thrift原理是什么

thrift原理是什么

thrift原理是什么

thrift原理是什么

thrift原理是什么

Thrift实现方式

  1. IDL描述性语言:当数据结构发生变化时,必须重新编辑IDL文件并生成相应的代码

  2. 基于注解的方式

  • service <-> @ThriftService注解service类 @ThriftMethod注解该类中的方法

  • struct <-> @ThriftStruct 注解model类 @ThriftField注解该类中的getter方法

  • enum <-> @ThriftEnumValue 注解enum

到此,相信大家对“thrift原理是什么”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


网页标题:thrift原理是什么
网页网址:http://myzitong.com/article/jhjhoh.html