您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > Thrift基本原理与应用
Thrift基本原理与应用1背景简介1.1什么是Thrift?Thrift是在2007年facebook提交Apache基金会将Thrift作为一个开源项目,对于当时的facebook来说创造thrift是为了解决facebook系统中各系统间大数据量的传输通信以及系统之间语言环境不同需要跨平台的特性。Thrift是一种实现RPC的软件框架,它自定义IDL,消息结构。1.2RPC与IDLRPC(RemoteProcedureCallProtocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。接口描述语言(Interfacedescriptionlanguage,缩写IDL),是CORBA规范的一部分,是跨平台开发的基础。IDL是用来描述软件组件接口的一种计算机语言。IDL通过一种中立的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信交流。1.3为什么使用Thrift?(1)实现跨语言通信支持C++,Java,Python,PHP,Ruby,Erlang,Perl,Haskell,C#,Cocoa,JavaScript,Node.js,Smalltalk,OCamlandDelphi等多种语言(2)完成高并发、大数据量传输(3)使用方便,需要编写的代码较少Thrift的框架结构和原理1.4其他实现RPC的框架和协议(1)ProtocolBuffer,google公司2000年提出的RPC框架(2)Avro,Apache提出的RPC框架(3)SOAP:SimpleObjectAccessProtocol,简单对象访问协议2Thrift框架结构与基本原理2.1Thrift框架结构图图1Thrift框架结构图2.2TProtocolTProtocol主要负责结构化数据组装成Thrift消息结构,或者从消息结构中读出结构化数据。Thrift包含以下几种类型的TPRotocol:TBinaryProtocol:所有数据直接按照二进制方式编码TCompactProtocol:压缩的二进制编码TDenseProtocol:类似于TCompactProtocol,但并不是所有语言均支持TJSONProtocol:使用JSON编码数据TSimpleJSONProtocol:只写方式的JSON编码TDebugProtocol:文本方式编码数据,主要用于调试2.3TTransport以字节流方式发送和接收Thrift消息结构。包含的类型有TSocket:使用阻塞的Socket进行I/O传输TFramedTransport:使用一个带缓存的Socket进行I/O传输TFileTransport:使用文件进行I/O传输TZlibTransport:完成数据的压缩传输2.4TServer接收Client的请求,并转到某个TProcessor上进行处理。包含类型有TSimpleServer:阻塞IO的单线程服务器TThreadedServer:阻塞IO的多线程服务器TThreadPoolServer:阻塞IO的多线程服务器,线程池管理线程TNonBlockingServe:使用非阻塞IO的多线程服务器,TTransport要选用TFramedTransport3Thrift的应用3.1Thrfit使用流程图图2thrift使用流程图用户只需编写IDL文件,定义服务端接口,搭建/开启服务端,搭建客户端,调用客户端的接口。3.2ThriftIDL(1)数据类型基本类型bool、byte、i16、i32、i64、double、string,binary结构体struct容器listtype、settype、maptype1,type2异常exception服务service域标识符内部使用i16存储,域标识符和类型名共同决定一个域(2)IDL举例structRequestStruct{1:i32requestId2:stringrequestData}structResponseStruct{1:i32responseId2:stringresponseData}serviceThriftSample//thrift与自定义代码的接口{ResponseStructSendReceive(1:RequestStructrequest)stringGetServerTime()}3.3目前Thrift的应用领域或产品(1)Facebook(2)Hadoop分布式系统基础架构(3)HBase开源的非关系型分布式数据库(4)Pythonbasedreal-timeWebframework(5)Evernote印象笔记,一款手机软件……4Thrift的优势及不足4.1Thrift、ProtocolBuffer、Avro、SOAP性能比较表1性能比较结果4.2Thrift优缺点总结(1)相比SOAP,数据量更小,客户端开销小,但是通用性和可扩展性差,数据格式固定,更适合做静态数据交互(2)相比其他RPC框架结构,Thrift支持的语言更多,支持更多的数据类型(3)Thrift内嵌了完整RPC实现,PB在文档方面性能更好5参考材料Thrift介绍哪些使用了Thrift、ProtocolBuffers和Avro的比较
本文标题:Thrift基本原理与应用
链接地址:https://www.777doc.com/doc-2862990 .html