Your SlideShare is downloading. ×
0
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
42qu thrift1
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

42qu thrift1

1,079

Published on

http://wiki.woodpecker.org.cn/moin/BPUG/2012-06-17

http://wiki.woodpecker.org.cn/moin/BPUG/2012-06-17

0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,079
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
15
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 42qu.com
  • 2. 基于 Th rift , 编写 VPS 管理系统以及等等胡思乱想 ...张沈鹏42q u .c o m 创始人zs p 042@ g m ail.c o m 42qu.com , 找到给你答案的人
  • 3. Th rift 是什么 ?• 一个跨语言的远程调用框架• 2007 年 Facebook 最初开发• 2008 年 Apache 开源项目 42qu.com , 找到给你答案的人
  • 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 ks 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 aController• 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 rifth 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 , 找到给你答案的人
  • 20. Wh y Th rift ?• 1 . 跨平台• 我们用 Th rift 的接口定义语言定义好数据模 型和服务操作• 然后用它提供的编译器为各种不同语言生 成客户端和服务器端的数据结构和服务接 口调用。 42qu.com , 找到给你答案的人
  • 21. Wh y Th rift ?• 2. 二进制数据效率高 如果我们指定二进制数据是 1 MB 的数据 编码后在线路上传输的也就是 1 MB 左右 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 , 找到给你答案的人
  • 25. Wh y Th rift ?• 6. 不要太大 Th rift 运行库和生成的代码都很小,而且是直接了 当。我能够很容易阅读和弄明白他们是如何工作 的 从那以后,它开始变得有点复杂 因为开源 , 不同的贡献者添加了很多用例并作了 一些优化,但是我要说,它跟其它方案比还是相 当紧凑的 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 , 找到给你答案的人
  • 27. 为什么我要用 th rift
  • 28. 我在做什么事 ?vp s .42q u .c o m
  • 29. vp s .42q u .c o m
  • 30. 2 个月 , 1 1 6 个 VPS 用户
  • 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 , 找到给你答案的人
  • 35. 只暴露接口的哲学 每个人只需要知道他应该知道的事情乔布斯的保密哲学 ?保证信息的最简化 , 不制造额外的信息噪音和他的设计哲学其实是一样的 所以 " 雷布斯 " 永远不是乔布斯 太多信息噪音 ...PS : 我喜欢 比尔 . 盖茨 , 不喜欢乔布斯 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 项以 外。• 因为,我曾用电子表格把这些项都列出来了,只是法务部门不会让我 给任何人看,即使人事招募部门很喜欢这个报表。
  • 38. 但是他们有一件事做的非常非常好,其好到可以把其他政治,理念,技术上的消耗和混乱完全弥补回来。
  • 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 下了一份命令。当然,他总 是这么干,这些命令对人们的影响来说就像用橡皮槌敲击 蚂蚁一样。
  • 40. 命令有几个要点 42qu.com , 找到给你答案的人
  • 41. 1所有团队的程序模块都要以通过 S e rvic e In te rfac e 方式将其数据与功能开放出来 42qu.com , 找到给你答案的人
  • 42. 2团队间的程序模块的信息通信,都要通过这些接口。 42qu.com , 找到给你答案的人
  • 43. 3除此之外没有其它的通信方式其他形式一概不允许:不能使用直接链结程序、不能直接读取其他团队的数据库、不能使用共享内存模式、不能使用别人模块的后门、等等,等等,唯一允许的通信方式只能是能过调用 S e rvic e In te rfac e 。 42qu.com , 找到给你答案的人
  • 44. 4任何技术都可以使用。比如:H TTP 、 C o rb a 、 Pu b s u b 、自定义的网络协议、等等,都可以, B e zo s不管这些
  • 45. 5所有的 S e rvic e In te rfac e ,毫无例外,都必须从骨子里到表面上设计成能对外界开放的。也就是说,团队必须做好规划与设计,以便未来把接口开放给全世界的程序员,没有任何例外。
  • 46. 6不这样的做 会被 炒鱿鱼
  • 47. hongq n分久必合 , 合久必分
  • 48. 服务 VS 库张沈鹏 补充 :) 服务和库的本质区别 , 服务有数据 • 库比作开源项目 – 比如 d n s p o d 开源 d n s 服务器 • 服务是一个解决方案 – d n s p o d 提供免费的 d n s 解析服务 42qu.com , 找到给你答案的人
  • 49. 服务 VS 库• 张沈鹏 补充 :) – 服务可以卖给全世界 ~ ^_^ • S te ve Y 对 Am azo n 和 G o o g le 平台的长篇 大论 • 不要去做 "in - h o u s e p ro g ram m e r" 42qu.com , 找到给你答案的人
  • 50. 不要去做 "in - h o u s e s o ftware "
  • 51. 服务 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 , 找到给你答案的人
  • 52. 服务 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 , 找到给你答案的人
  • 53. 服务 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 , 找到给你答案的人
  • 54. 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 代码;而产品经理本人 则坐在宽敞明亮的大办公室里面晃悠。
  • 55. 我的衍生 不要开发一个东西只打算给自己公司内部用
  • 56. 嗯, B e zo s 领悟到的大事是为了销售书籍和各种商品需要的基础架构,这个基础架构可以被转变成为绝佳计算平台( C o m p u tin g Platfo rm )。所以,现在他们有了 Am azo n E las tic C o m p u teC lo u d (亚马逊弹性运算云平台E C 2 ), Am azo n E las ticMap Re d u c e , Am azo n Re latio n al D atab as eS e rvic e (亚马逊关系数据库服务)以及其他可到 AWS aws .am azo n .c o m 查得到的一堆 S e rvic e
  • 57. am azo n亚马逊最奇怪的生意: 土耳其机器人 Mechanical Turk 其代表的重要理念— — 一切与亚马逊老总杰夫 · 贝佐斯有 关的事情都蕴含着重要理念— — 是将电脑无法完成的无数 琐碎的脑力工作自动化 IBM 的沃森( Watson )机器人也干不了这些事儿。(“ 亚马逊土耳其机器人” 是一种众包网络集市,能使计算机 程序员调用人类智能来执行目前计算机尚不足以胜任的任 务。
  • 58. 土耳其机器人• 沃尔夫冈 · 冯 · 坎佩伦( Wo lfg an g vo n Ke m p e le n ) 1 770 年打造了一套所谓的自 动下棋机,击败了当时一些最优秀的棋 手,更让其他所有人目瞪口呆。奥妙所 在:一位象棋大师藏在机器里头。• 而藏在亚马逊的土耳其机器人里面则是数 以千计的大活人,随时准备完成平台上发 布的超过 1 5 万种工作。
  • 59. 用例• 马特 · 理查森( 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/
  • 60. 起源亚马逊卖书图书的商品信息需要人工去完善
  • 61. 总结• 只有当你想把一个东西卖给全世界的时候 你才有可能去把一个事情做好 而不是 j s t wo rk u• 只有当一个东西能卖到钱的时候 你才有动力去把一件事情做好
  • 62. 广告 : 我们卖钱的服务• 欢迎购买我们的 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
  • 63. 42qu.com找到给你答案的人

×