比如:

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优缺点讨论相关推荐

  1. Oracle中序列(Sequence)详解

    Oracle中序列(Sequence)详解 一 序列定义 序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).不占用磁盘空间,占用内存. 其主要用 ...

  2. Windows Server 2003 Clustering 服务

    Windows Server 2003 Clustering 服务 技术文档 • 服务器群集:Windows 2000 和 Windows Server 2003 常见问题 阅读针对 Windows ...

  3. 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 ...

  4. 小麦苗blog文章索引

    自从2014年7月1号开始写blog到2015年5月5日,历时10个月的时间,大概写了90篇文章,个人觉得blog不在多,在于精,正如我所倡导的注重技术的应用,如果某个技术网上一搜一大堆,那我们还写什 ...

  5. 论文阅读笔记——Vulnerability Dataset Construction Methods Applied To Vulnerability Detection A Survey

    本论文相关内容 论文下载地址--Web Of Science 论文中文翻译--Vulnerability Dataset Construction Methods Applied To Vulnera ...

  6. 「首席架构师看无服务器」openwhisk 经典使用案例

    OpenWhisk提供的执行模型支持各种用例.以下各节包括典型示例.有关无服务器体系结构,示例用例,优缺点讨论和实现最佳实践的更详细讨论,请阅读Martin Fowler博客上的Mike Robert ...

  7. 手把手教你如何写作美赛论文

    本文结合网络上资源.个人建模经历.以及一系列书本而成,欢迎讨论和咨询 美赛写作的重要程度 由于美赛不提交代码,做的好不好和写的好不好完全决定了你拿奖的可能性. 该项赛事要求提交英文摘要和论文,作为评奖 ...

  8. 【已更新】北航计算机学院考研知识点总结(专业课961)

    #文档整理不易,有偿资料详讯wechat:_129Ww 961复习要点 文章目录 961复习要点 计组 概述 计算机组成与结构概述 基本组成 计算机的功能 计算机中数的表示 基本约束:采用二进制,只有 ...

  9. 保姆级教程:手把手教你拿下雅思写作7分

    在留学路上,雅思考试是绕不开的一道坎.然而,众所周知,雅思学习热度高,学习难度大,而且很多人找不到合适的学习方法.在这里,我们以雅思写作中的大作文为例,从大作文的结构拆解.学习的任务拆分和如何提升学习 ...

最新文章

  1. 2009 Competition Highlights by ICPC Live
  2. HDU1527 - 取石子游戏【威佐夫博弈】
  3. 关于router name 的url重写 --frontname rewrite frontname重写!
  4. (转)构建微服务:Spring boot 入门篇
  5. 基本的二分查找、寻找第一个和最后一个数的二分查找
  6. 前端学习(3290):react hook state-hook传入对象+1操作
  7. 【编程开发】Python---列表
  8. 在JupyterNotebook中使用多个Python环境
  9. 如何以 JAVA call 一個現有的 dll 檔?
  10. 神奇的go语言(网页下载)
  11. struts Caused by: no protocol dtd - Class: java.net.URL
  12. 仿原生app,native特效
  13. 神经网络matlab仿真,MATLAB神经网络仿真与应用_IT教程网
  14. sem与seo的区别与联系
  15. 2019java面试(二)
  16. 【Python学习】程序练习《购物车程序》
  17. 电商类-仿美团页面demo
  18. [湖湘杯 2021 final]Penetratable
  19. 万字好文!Redis 到底是怎么实现“附近的人”这个功能的呢?
  20. 《疯狂Java讲义》读书笔记3

热门文章

  1. 服务器存储文件解决方案,服务器及存储解决方案-20210724001444.docx-原创力文档
  2. win7装xp双系统_电脑怎样安装win10win7双系统 电脑安装win10win7双系统方法【详解】...
  3. ubuntu体验python_Ubuntu下配置舒服的Python开发环境
  4. ios 内购正式环境_iOS苹果内购(详细步骤)
  5. bandicom录屏音画不同步_屏幕录制的视频画面和声音不同步的问题 - Bandicam(班迪录屏)...
  6. 到现在还有人不知道JavaScript匿名函数嘛
  7. 计算机视觉算法有哪些?
  8. 浅显易懂入门大数据系列:一、HDFS(超详细)
  9. SMMU架构手册之数据结构和转换流程(4)
  10. 初步了解panda3d灯光