上一篇:为袁腾飞老师写的引用文献
下一篇:他是谁?
读“解剖Twitter:Twitter系统架构设计分析”的笔记
米娅 2010年5月25日 17:47:58

原文:解剖Twitter:Twitter系统架构设计分析

看这篇文章很有收获,大致归纳一下:

1,“如果有follower正在阅读他的Twitter个人主页,主页里暗含的JavaScript会自动每隔几十秒,访问一下Twitter服务器,检查正在看的这个个人主页是否有更新。如果有更新,立刻下载新的主页内容。这样follower就能读到最新发表的短信了。”

2,Twitter成功的重要原因之一,就是速度快。“Twitter 工程师认为,一个用户体验良好的网站,当一个用户请求到达以后,应该在平均500ms以内完成回应。而Twitter的理想,是达到200ms- 300ms的反应速度[17]。因此在网站架构上,Twitter大规模地,多层次多方式地使用缓存。”

3,Twitter采用三层架构,“逻辑层 (Logic Tier)用的工具是Mongrel Rails Server,利用Rails现成的模块,降低开发的工作量。”

4,Twitter的各个请求的实现用到了队列。“队列的实现方式有多种,例如Apache Mina就可以用来做队列。但是Twitter团队自己动手实现了一个队列,Kestrel。”......“Kestrel和Mina这些“重量级”的队列,意义在于支持联络多台机器的,分布式的队列。” 



2楼 2010年5月25日 18:07:53 米娅

5, Twitter工程师们在解决API通道的缓存问题使用的是MemCached ,在处理Web通道的缓存问题时使用的是开源项目Varnish

6, “Apache Web Server的主要任务,是解析HTTP,以及分发任务。不同的Mongrel Rails Server负责不同的任务,但是绝大多数Mongrel Rails Server,都要与Vector Cache和Row Cache(楼主注:API缓存)联系,读取数据。Rails Server如何与MemCached联系呢?Twitter工程师们自行开发了一个Rails插件(Gem),称为CacheMoney。”

7,试验显示,Apache能过容纳4,000个并发连接。Yaws能够容纳80,000以上的并发连接,但Yaws使用Erlang语言写的。

8,变买为租解决Twitter流量的波动问题;

9,“Twitter完成整个业务流程的平均时间是500ms,甚至能够提高到200-300ms,说明在Twitter分布式系统中,事件驱动的设计是成功”。  


3楼 2010年5月25日 18:23:01 米娅

10, 为了提高消息队列的垃圾回收(Garbage Collection)的效率,Twitter用Kestrel取代了Ruby,因为Scala运行在JVM上,因此有更优化的垃圾回收手段。

11,Twitter可能用“API Server”代替Mongrel,因为据说它的速度比Apache+Mongrel组和快4倍。“Apache+Mongrel组合,每秒能够处理139个请求,而“API Server” 每秒钟能够处理大约550个请求。”

第1页 共1页
相关链接
1. 长周末纽约购物记(图)
2. 自多伦多去美国尼亚加拉瀑布购物记(图)
3. 关于测试Drupal核心及Drupal单元测试功能笔记
4. 在siteground.com的shared Server上安装SSL笔记
5. 查找数据库的重复记录(附SQL语句)
6. MySQL插入新记录后获取插入数据的id值
7. 2013年报2012年税的笔记
8. 拆卸Dell的Inspiron 1501笔记本清理风扇和CPU
9. 编写邮件群发程序经验教训笔记
10. 如何查看笔记本隐藏分区、显示隐藏分区
11. 网店日记(1):把俄罗斯市场放弃了
12. 在网站使用Google地图笔记
13. 用PHP编写Twitter客户端笔记(4):用户登录验证(F)
14. 用PHP编写Twitter客户端笔记(3):如何用curl传递浏览器的语言信息(C)
15. 用PHP编写Twitter客户端笔记(2):Service Provider Grants Request Token
16. 用PHP编写Twitter客户端笔记(1):Consumer Requests Request Token