1.thrift概述

目录

1.thrift简介

2.thrift特性

3.thrift架构


1.thrift简介

thrift是一款轻量级的跨语言RPC框架,其最初由Facebook开发并开源,后来上升至apach顶级项目,MTthrift就是基于thrift开发而来

2.thrift特性

thrift主要有以下特性:

  • 接口描述语言:在thrift中,所有接口及相关参数都需要通过接口描述语言(IDL)在.idl文件中描述,该idl文件可以被生成器转化为不同语言,从而实现跨语言且具有强可读性,且可以十分清晰地建立接口文档

  • 多语言支持:可支持C++、java、python、php、C#等十几种语言

  • 异步调用:thrift函数可以被异步调用,调用函数的客户端不会阻塞等待,直到函数返回数据后,客户端才会阻塞获取

  • 异常:thrift函数执行出现错误后可抛出一个标准或者自定义异常

3.thrift架构

1.thrift概述

上图是thrift官方给出的自己的架构图,非常清晰,thrift由四层组成。四层之间松耦合,每一层都可以选择不同的实现方式。

  • transport(传输层):传输层对网络io进行了一次简单的抽象,该层的存在使得thrift的其他层可以与底层传输解耦,如上图所示,传输层支持原生tcp、http等传输协议

  • protocol(协议层):协议层提供了内存中数据结构映射为线性数据结构的机制,说白了,协议层通过对数据编解码,让通信双方能够获取并解析相同的数据。thrift的协议层支持json、xml、纯文本、压缩二进制等协议

  • processor(处理层):处理层对io能力进行了一层封装,处理层接口的实现都是由idl编译器生成的。针对服务端的处理层基于输入协议读取数据,并将数据处理委托给由用户实现的handler,并将处理后的数据基于输出协议返回

  • server(服务层):服务层将上面几层聚合在一起:创建传输层、协议层和处理层对象,等待到来的连接并将其交由处理层处理