4. Th rift 的项目初衷
fac e b o o k 创造 th rift 是为了解决
1 . 各系统间大数据量的传输通信
2 . 不同语言系统之间的跨平台
参考资料 :
thrift 入门介绍
http://wenku.baidu.com/view/95ed8e2c0066f5335a81213d.html
Facebook 的系统架构
http://coolshell.cn/articles/4549.html
http://www.quora.com/What-is-Facebooks-architecture
42qu.com , 找到给你答案的人
5. Wh at is Fac e b o o k's arc h ite c tu re ?
• B u s in e s s lo g ic is e xp o s e d as s e rvic e s u s in g
Th rift . S o m e o f th e s e s e rvic e s are
im p le m e n te d in PH P, C + + o r Java d e p e n d in g
o n s e rvic e re q u ire m e n ts (s o m e o th e r
lan g u ag e s are p ro b ab ly u s e d ...)
• 业务逻辑以 S e rvic e 的形式存在,其使用
Th rift 。这些 S e rvic e 根据需求的不同由 PH P ,
C + + 或 Java 实现(也可以用到了其它的一些语
言… … )
h ttp ://www.q u o ra.c o m /Wh at- is - F ac e b o o ks - arc h ite c tu re
6. MVC
• 我个人的理解
View
• PH P = Pyth o n 中的模版层 ( 比如 m ako ,
j j)
in a
Controller
• Th rift , 背后各种语言
7. Th rift 谁在用 ?
联合创始人
Fac e b o o k 前首席技术官 C TO 亚当 · 德安杰罗 (Ad am D 'An g e lo )
Fac e b o o k 前项目工程师 查理 · 奇弗 (C h arlie C h e e ve r)
• Th rift 用于系统后端数据的通信
• 服务端是用 C + + 来实现的,客户端则是 p yth o n
参考资料
h ttp ://www.p h ilwh ln .c o m /q u o ras - te c h n o lo g y- e xam in e d #th rift
42qu.com , 找到给你答案的人
8. Th rift 谁在用 ?
h o n g q n ( 豆瓣 C TO )
利用 Pas te S c rip t 简化基于 Th rift 的服务框架开发
• h ttp ://www.s lid e s h are .n e t/h o n g q n /p as te - s c rip t- th rift
合久必分,分久必合
• h ttp ://www.s lid e s h are .n e t/h o n g q n /s s - 1 2662476
42qu.com , 找到给你答案的人
9. Th rift 谁在用 ?
中国宽带产业基金 (CBC Capital)
主要投资者包括中信资本、新闻集团、电讯盈科、网通
领投的 7000 万美元的投资,该基金董事长为田溯宁 ( 前中国网通
CEO)
E ve rn o te ( 印象笔记 ) 用 Th irft 实现 API
42qu.com , 找到给你答案的人
10. RPC 有很多选择 ?
• XML- RPC
• S O AP
• IC E
• ...
Wh y Th rift ?
42qu.com , 找到给你答案的人
11. E ve rn o te 的心路历程
S o API To g e th e r: E ve rn o te an d Th rift
h ttp ://b lo g .e ve rn o te .c o m /te c h /201 1 /05/26/e ve rn o te - an d - th rift/
42qu.com , 找到给你答案的人
12. E ve rn o te 的心路历程
在 2007 年当我们开始计划 E ve rn o te 服务的时候
我们就知道在发布服务的那一天就需要同时支持
• 瘦客户端 ( 象浏览器 )
• 胖客户端
这一点促使我们在设计 we b 用户界面之前就开始思考远
程协议和客户端访问 API 接口
而不是拖到几个月之后将 API 接口架在已经存在网站服务
上
42qu.com , 找到给你答案的人
13. E ve rn o te 应用对 API 访问接口的需
求
1 . 跨平台
08 年 2 月份发布的时候
产品代码有
服务器端 JAVA
客户端是 Win 32( 包括 Win Mo b ile ) C + +
客户端 O b j C C o c o a (iO S )
-
42qu.com , 找到给你答案的人
14. E ve rn o te 应用对 API 访问接口的需
求
2. 二进制数据效率高
• 客户同步的便条信息中包含上百幅嵌入图,总共
有 1 0M 字节大小
• 我们需要 API 接口用将近 1 5M 的带宽传输 1 5M
的便条
42qu.com , 找到给你答案的人
15. E ve rn o te 应用对 API 访问接口的需
求
3. 向上 / 向下兼容性
一旦有人在他的笔记本上安装了 1 .1 版
就不想在每次扩展数据模型时强迫升级本地软件
42qu.com , 找到给你答案的人
16. E ve rn o te 应用对 API 访问接口的需
求
4. 各个语言原生支持
不想写针对每个客户端写大量解析 / 封装代码
这个费时又容易出错,也会使得 3 变得不切实际
42qu.com , 找到给你答案的人
17. E ve rn o te 应用对 API 访问接口的需
求
5. 项目开源
支持有标准可依或开源软件
不想把服务 API 锁在一个商业产品上
42qu.com , 找到给你答案的人
18. E ve rn o te 应用对 API 访问接口的需
求
6. 不要太大
倾向于在每个移动客户端部署不超过 1 MB 的文件
,不要超过 200 个类
42qu.com , 找到给你答案的人
19. E ve rn o te 的人生抉择
• 我们花了几个月时间来研究和测试各种备选方案。 XML- RPC 和
S O AP 在某些领域 ( 上面的 1 和 5) 很强。 Ze ro C 的 IC E 在别的领域
(2 和 4) 很强。我们也争论过是否自己写一个专用的协议。
• 一个朋友推荐我们看一下 F ac e B o o k 最近开源的 Th rift 框
架。 Fac e b o o k 在内部用它在后端服务器之间传递消息,它们之间经
常跨越程序语言的界线 ( 如 p h p 到 c + + ) 。其他人好象也是用 Th ift
做类似的事情:在后端服务器之间通信用。
• 我们寻求的跟上面这有一点不一样:这个框架可以用在服务器之间的
通信中,但是也需要用在大量的客户端与服务器通过 in te rn e t 同步上
。
Th rift 是最适合我们需求
42qu.com , 找到给你答案的人
22. Wh y Th rift ?
• 3. 向上 / 向下兼容性
这是 Th rift 真正适用的地方。如果你足够细心并
且明白 th rift 是如何工作的话,你就能在不影响现
有的客户端的情况下增加数据结构、字段、服务
方法和函数参数
3 年前发布的 Win d o ws 和 Mac 客户端在今天仍
然能跟 E ve rn o te 同步
42qu.com , 找到给你答案的人
23. Wh y Th rift ?
• 4. 原生支持
在那个时候
Th rift 没有包含任何 O b j C C o c o a 支持
-
这样我们 Mac 组的一个同事把这个加到了
Th rift 编译器里。
42qu.com , 找到给你答案的人
24. Wh y Th rift ?
• 5. 代码开源
F ac e b o o k
把 th rift 交给了 ap ac h e 开源基金会
42qu.com , 找到给你答案的人
26. Wh y Th rift ?
• 最后的结果是 E ve rn o te 服务接口,这个让我们自己的客
户 ( 几百个第三方应用 ) 使用原生代码跟一个通用的 API
访问接口打交道。我们有超过 3 百万的活跃用户,经常在
不同的平台上使用 e ve rn o te 。
数据更新 :
• 用户数量突破了 2500 万 , 超过 1 00 万的付费用户
• E ve rn o te C E O Ph il Lib in 指出, E ve rn o te 的付费用户占
有率随着用户使用时间增长而增长。刚使用 E ve rn o te 一
个月的用户中,付费的用户不超过 0.5% ,但在那些四年
来一直陪伴 E ve rn o te 的老用户中,付费人群占到了 25%
之多。
42qu.com , 找到给你答案的人
31. Wh o Are We ?
• vp s e e @ 南非
• p lan
• 我 ( 张沈鹏 )
42qu.com , 找到给你答案的人
32. Wh y we u s e th rift
• 我不懂虚拟化
• 他们不懂写网站
• 我不需要关心他们是怎么实现
• 他们不需要知道我是怎么实现
33. vp s .42q u .c o m 的 具体实现
h ttp s ://g ith u b .c o m /42q u /vp s
接口定义文件
h ttp s ://g ith u b .c o m /42q u /vp s /b lo b /m as te r/s aas .th rift
34. 好处 1 : 强迫你去设计优雅的接口
PS : 传闻 G o o g le 流传着一句话
每一个优雅的接口背后都有一堆龌蹉的代码
接口是代码的防火墙 ( 隔离龌蹉的代码 )
明确责任的界限 ( 到底是谁的代码出了问题
)
42qu.com , 找到给你答案的人
36. S te ve Ye g g e : Am azo n 的前员工,现任 G o o g le 员工
S te ve Y 对 Am azo n 和 G o o g le 平台的长篇大
论
h ttp ://c o o ls h e ll.c n /artic le s /5701 .h tm l
42qu.com , 找到给你答案的人
37. S te ve Ye g g e
• 我曾在 Am azo n 工作了六年半,现在,我在 G o o g le 的日子也差没不
多这么长了。
• 对于这两家公司,有一件事总是萦绕着我— — 这种感觉一天比一天强
烈─ ─ 那就是, Am azo n 每件事都做错了,而 G o o g le 每件事都做对
了。
• 当然啦,这是很笼统的话,但却是惊人的准确,相当的疯狂吧。大概
有一百甚至两百种不同的地方可以让我们去比较这两个公司,而
G o o g le 可能在每一项都能胜出,如果我记的没错,除了其中 3 项以
外。
• 因为,我曾用电子表格把这些项都列出来了,只是法务部门不会让我
给任何人看,即使人事招募部门很喜欢这个报表。
39. 有一天, Je ff B e zo s 下了一份命令
• 我们现在要说的这个人,是在多个严肃的公开场合说要来
Am azo n 工作就应该付他钱才对的人。
• 当有人跟他意见不同时,他会递出写有他名字的黄色即时
贴以提醒那个人“ 谁是公司的老大 ” 。这家伙是… …
S te ve Jo b s
• 我想,除了没有品味和设计能力,他们很相似。千万别误
解我, B e zo s 是个绝顶聪明的人,只不过他把那些正常
的管控搞得像嗑了药的嬉皮士一样罢了。
• 所以,有一天, Je ff B e zo s 下了一份命令。当然,他总
是这么干,这些命令对人们的影响来说就像用橡皮槌敲击
蚂蚁一样。
54. 服务 VS 库
• Jo e l S p o ls ky 在耶鲁大学的演讲(上)
Jo e l S p o ls ky 是一个美国的软件工程师,他的网络日志 "Jo e l谈软
件 " ( Jo e l o n S o ftware )非常有名,读者人数可以排进全世界前
1 00 名。
42qu.com , 找到给你答案的人
55. 服务 VS 库
• 毕业以后, Jo e l先在微软公司干了一段日子,然后回到
纽约,进入维亚康母公司( Viac o m ),为这家巨型的娱
乐传播公司编写软件,成为 IT 部门里一个程序员( in -
h o u s e p ro g ram m e r )
• 后来, Jo e l回忆起来,认为这是他一生中最痛苦的日子
,并且劝告计算机系的学生尽可能
不要去做 " in- ho us e p ro g ra mme r"
42qu.com , 找到给你答案的人
56. 服务 VS 库
in- ho us e p ro g ra mme r
传统公司 IT 部门里的程序员
只属于公司内部的维护人员
而不是直接从事核心业务的人员
h ttp ://www.ru an yife n g .c o m /b lo g /2007/1 2/jo e l_s p o ls ky_talk_at_yale _p art_i.h tm l
或
h ttp ://b lo g .c s d n .n e t/p o n g b a/artic le /d e tails /1 91 8649
42qu.com , 找到给你答案的人
57. in- ho us e p ro g ra mme r
• 因为做 in - h o u s e 软件,你永远不会像做
fac e b o o k 那样实现的功能跟公司命运息息相关,
后者你可以花上一个星期去捣鼓界面上的一个小
特性,因为你的产品是要给大家用的
你有机会实现真正漂亮的东东
• 另外,你能得到上司的重视,你的职业生涯与你
的技术挂钩。
• 而作 in - h o u s e 软件你就只能跟另外两个人猥琐
在一个阴暗的办公室角落,面朝没有窗户的墙壁
,挥汗如雨地猛敲 H TML 代码;而产品经理本人
则坐在宽敞明亮的大办公室里面晃悠。
59. 嗯, B e zo s 领悟到的大事是
为了销售书籍和各种商品需要的基础架构,这个
基础架构可以被转变成为绝佳计算平台
( C o m p u tin g Platfo rm )。
所以,现在他们有了 Am azo n E las tic C o m p u te
C lo u d (亚马逊弹性运算云平台
E C 2 ), Am azo n E las tic
Map Re d u c e , Am azo n Re latio n al D atab as e
S e rvic e (亚马逊关系数据库服务)
以及其他可到 AWS aws .am azo n .c o m 查得到的
一堆 S e rvic e
60. am azo n
亚马逊最奇怪的生意:
土耳其机器人
Mechanical Turk
其代表的重要理念— — 一切与亚马逊老总杰夫 · 贝佐斯有
关的事情都蕴含着重要理念— — 是将电脑无法完成的无数
琐碎的脑力工作自动化
IBM 的沃森( Watson )机器人也干不了这些事儿。(“
亚马逊土耳其机器人” 是一种众包网络集市,能使计算机
程序员调用人类智能来执行目前计算机尚不足以胜任的任
务。
61. 土耳其机器人
• 沃尔夫冈 · 冯 · 坎佩伦( Wo lfg an g vo n
Ke m p e le n ) 1 770 年打造了一套所谓的自
动下棋机,击败了当时一些最优秀的棋
手,更让其他所有人目瞪口呆。奥妙所
在:一位象棋大师藏在机器里头。
• 而藏在亚马逊的土耳其机器人里面则是数
以千计的大活人,随时准备完成平台上发
布的超过 1 5 万种工作。
62. 用例
• 马特 · 理查森( Matt Ric h ard s o n )之手的
奇特相机,设计初衷就是,如何用 20 个字
来描述一张照片。
• 这款相机目前被称为“ 白描相机
( D e s c rip tive C am e ra )” ,使用一张文
字描述的打印字条来取代实际拍摄的图
像。
• h ttp ://te c h 2ip o .c o m /50980/
65. 广告 : 我们卖钱的服务
• 欢迎购买我们的 vp s
vp s .42q u .c o m
• p yth o n 网站开发 201 2 暑期 基础入门班 报名中
1 6 天的课时 ( 周一 至 周五 下午 )
收费 2500, 限 1 5 人
邮箱 :
42q u .p y@ g m ail.c o m