《Thrift白皮书》小结

系统 1645 0

一.简介

    定义:Thrift是facebook开发出的一个 软件库 和一组 代码生成工具 ,以加快高效率、可扩展的后端服务的开发与实现的速度。
    使用:先在一个单独的语言无关的文件中定义数据类型和服务接口,再用生成器生成代码,最后可以根据需要添加和修改生成代码(可能用到Thrift的库)。

    特色:多语言支持、库和代码生成器带来的高效率。

 

二.基础组件

    包括:类型、传输、协议、版本化和处理器

2.类型

    2.1.基本类型:bool,byte,i16,i32,i64,double,string

    2.2.结构体:使用关键字struct定义

    2.3.容器:list<type>,set<type>,Map<type1,type2>

    2.4.异常:使用关键字exception定义

    2.5.服务:使用关键字service定义

3.传输

    3.1.接口:TTransport,TServerTransport

    3.2.实现:TSocket,TFileTransport,Utilities(TBufferdTransport,TFramedTransport和

                  TMemoryBuffer)

4.协议:

    4.1.接口:双向有序的消息传递

                 基本类型、容器及结构体的编码

    4.2.结构:Thrift协议是自定界的,没有任何成帧,且不论编码格式。

                  如需成帧可使用TFramedTransport来完成。

    4.3.实现:所有数据按一种扁平的二进制格式来写的。

5.版本化:

    5.1.域标识符:在语言无关文件中的变量前的数字,自动添加的是从-1开始的负数

    5.2.lsset:用于对待预料之外的域

    5.3.案例分析:主要是客户端和服务器新旧不匹配

    5.4.协议/传输版本化

6.远程过程调用实现:

    6.1.TProcessor:核心接口,有bool process(TProtocol in,TProtocol out)

    6.2.生成代码:特别提示下,内部会生成相应的Client类

    6.3.TServer:类型有TSimpleServer,TThreadedServer和TThreadPoolServer。

 

三.其他

7.实现细节

    7.1.目标语言:C++,Java,Python,Ruby和PHP。

    7.2.生成的结构体

    7.3.RPC方法识别

    7.4.服务器和多线程:Thrift实现了自己的多线程库

    7.5.线程原语:命名空间facebook::thirft::concurrency中实现了Thrift线程库:

                       primitives,thread pool manager,timer manager。

                  boost::shared_ptr,Mutex类,Condition类和Monitor类。

                  借用Java中thread(线程对象)和runnable(线程执行逻辑)的区别的经验。

    7.6.Thread,Runnable and shared_ptr

    7.7.ThreadManager

    7.8.TimerManager

    7.9.非阻塞操作:Thrift基于libevent和TFramedTransport。

    7.10.编译器

    7.11.TFileTransport

8.Facebook的Thrift服务:

    Facebook中已大量使用Thrift,包括搜索、日志、手机、广告和开发者平台。

9.总结:

    使用Thrift可以让工程师们分而治之的将功能进行划分并可采用合适的语言类实现,而不用在编写重复的代码。

《Thrift白皮书》小结


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论