Thrift优缺点讨论
比如:
1. Thrift主要的特点是不是跨语言?
2. Facebook有很多跨语言调用的场景么?为什么要开发Thrift这个东东?
3. 下载国内外各大互联网公司针对Thrift应用规模如何?一般都是在什么场景下应用?
4. Thrift优缺点?
所以专门开这篇博文,随着时间推移遇到的较好的关于Thrift的观点和想法都记录在这里!!!
===========================================================================================================
著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:徐文浩
链接:http://www.zhihu.com/question/20189791/answer/43563283
来源:知乎
目前公司主要的序列化,RPC服务都基于Thrift,包括内部的广告投放引擎,数据处理系统,其实和Web相关的部分不多,只有少量的Web前端的服务调用调用后端的Thrift RPC服务,更多的RPC还是广告投放引擎和后端数据策略模块之间的互相通信。
Thrift的好处主要是以下几点
1. One-stop shop,相对于protobuf,序列化和RPC支持一站式解决,如果是pb的话,还需要考虑选择RPC框架,现在Google是开源了gRpc,但是几年以前是没有第一方的标准解决方案的
2. 特性丰富,idl层面支持map,protobuf应该是最近才支持的,map的key支持任意类型,avro只支持string,序列化支持自定义protocol, rpc支持thread pool, hsha, no blocking 多种形式,必有一款适合你,对于多语言的支持也非常丰富
3. RPC和序列化性能都不错,这个到处都有benchmark,并不是性能最好的,但是基本上不会成为瓶颈或者短板
4. 有很多开源项目的周边支持都是thrift的,hbase提供thrift服务,hive,spark sql,cassandra等一系列对外的标准服务接口都是thrift的以支持多语言。
5. Column Storage的话,parquet支持直接通过thrift idl转换,如果在Hadoop集群上存储数据,elephant-bird 支持得很好,你可以很方便地针对thrift的数据通过pig写dsl,如果你希望在rpc服务外做一系列工作,可以用finagle包装一层。不过,这部分对于protobuf和avro支持一般也不错
对于早中期的互联网公司,从山寨版走向"Everything is a service"的方案,thrift是一个很好的,开箱即用的一站式解决方案,不需要自行做改造或者适配,性能也很优秀,没有太多摸索和踩坑的成本。
缺点么,和其他facebook开源的项目都有类似的问题,只管拉不管擦
1. 基本没有官方文档,使用参考可以看看有人专门写的这个 Thrift: The Missing Guide
2. RPC在 0.6.1 升级到 0.7.0 是不兼容的!这个对于早于 0.6.1 开始使用的用户来说是个大坑
3. bug fix和更新不积极,好在序列化和RPC服务都不是太复杂的问题,需要考量的设计问题不多,自己维护patch的成本不高,如果我没有记错的话,0.6.1的java的ThreadPool Server是会有Thread死亡之后的Thread泄露问题的
4. Facebook今年说,我们开源了一个新的performance更好的 fbthrift,你说你该用apache thrift还是fbthrift呢?
Thrift优缺点讨论相关推荐
- Oracle中序列(Sequence)详解
Oracle中序列(Sequence)详解 一 序列定义 序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).不占用磁盘空间,占用内存. 其主要用 ...
- Windows Server 2003 Clustering 服务
Windows Server 2003 Clustering 服务 技术文档 • 服务器群集:Windows 2000 和 Windows Server 2003 常见问题 阅读针对 Windows ...
- R-CNN家族梳理:从R-CNN到Mask R-CNN
R-CNN家族梳理:从R-CNN到Mask R-CNN 文章目录 R-CNN家族梳理:从R-CNN到Mask R-CNN 一.R-CNN(2014) 1.1 Selective Search:Regi ...
- 小麦苗blog文章索引
自从2014年7月1号开始写blog到2015年5月5日,历时10个月的时间,大概写了90篇文章,个人觉得blog不在多,在于精,正如我所倡导的注重技术的应用,如果某个技术网上一搜一大堆,那我们还写什 ...
- 论文阅读笔记——Vulnerability Dataset Construction Methods Applied To Vulnerability Detection A Survey
本论文相关内容 论文下载地址--Web Of Science 论文中文翻译--Vulnerability Dataset Construction Methods Applied To Vulnera ...
- 「首席架构师看无服务器」openwhisk 经典使用案例
OpenWhisk提供的执行模型支持各种用例.以下各节包括典型示例.有关无服务器体系结构,示例用例,优缺点讨论和实现最佳实践的更详细讨论,请阅读Martin Fowler博客上的Mike Robert ...
- 手把手教你如何写作美赛论文
本文结合网络上资源.个人建模经历.以及一系列书本而成,欢迎讨论和咨询 美赛写作的重要程度 由于美赛不提交代码,做的好不好和写的好不好完全决定了你拿奖的可能性. 该项赛事要求提交英文摘要和论文,作为评奖 ...
- 【已更新】北航计算机学院考研知识点总结(专业课961)
#文档整理不易,有偿资料详讯wechat:_129Ww 961复习要点 文章目录 961复习要点 计组 概述 计算机组成与结构概述 基本组成 计算机的功能 计算机中数的表示 基本约束:采用二进制,只有 ...
- 保姆级教程:手把手教你拿下雅思写作7分
在留学路上,雅思考试是绕不开的一道坎.然而,众所周知,雅思学习热度高,学习难度大,而且很多人找不到合适的学习方法.在这里,我们以雅思写作中的大作文为例,从大作文的结构拆解.学习的任务拆分和如何提升学习 ...
最新文章
- 2009 Competition Highlights by ICPC Live
- HDU1527 - 取石子游戏【威佐夫博弈】
- 关于router name 的url重写 --frontname rewrite frontname重写!
- (转)构建微服务:Spring boot 入门篇
- 基本的二分查找、寻找第一个和最后一个数的二分查找
- 前端学习(3290):react hook state-hook传入对象+1操作
- 【编程开发】Python---列表
- 在JupyterNotebook中使用多个Python环境
- 如何以 JAVA call 一個現有的 dll 檔?
- 神奇的go语言(网页下载)
- struts Caused by: no protocol dtd - Class: java.net.URL
- 仿原生app,native特效
- 神经网络matlab仿真,MATLAB神经网络仿真与应用_IT教程网
- sem与seo的区别与联系
- 2019java面试(二)
- 【Python学习】程序练习《购物车程序》
- 电商类-仿美团页面demo
- [湖湘杯 2021 final]Penetratable
- 万字好文!Redis 到底是怎么实现“附近的人”这个功能的呢?
- 《疯狂Java讲义》读书笔记3
热门文章
- 服务器存储文件解决方案,服务器及存储解决方案-20210724001444.docx-原创力文档
- win7装xp双系统_电脑怎样安装win10win7双系统 电脑安装win10win7双系统方法【详解】...
- ubuntu体验python_Ubuntu下配置舒服的Python开发环境
- ios 内购正式环境_iOS苹果内购(详细步骤)
- bandicom录屏音画不同步_屏幕录制的视频画面和声音不同步的问题 - Bandicam(班迪录屏)...
- 到现在还有人不知道JavaScript匿名函数嘛
- 计算机视觉算法有哪些?
- 浅显易懂入门大数据系列:一、HDFS(超详细)
- SMMU架构手册之数据结构和转换流程(4)
- 初步了解panda3d灯光