最近看到的另外一个介绍Twitter技术的视频[Slides ] [Video (GFWed)],这是Twitter的John Adams在Velocity 2009 的一个演讲,主要介绍了Twitter在系统运维方面一些经验。 本文大部分整理的观点都在Twitter(@xmpp )上发过,这里全部整理出来并补充完整。
Twitter没有自己的硬件,都是由NTTA来提供,同时NTTA负责硬件相关的网络、带宽、负载均衡等业务,Twitter operations team只关注核心的业务,包括Performance,Availability,Capacity Planning容量规划,配置管理 等,这个可能跟国内一般的互联网公司有所区别。
1. 运维经验
* Metrics
Twitter的监控后台几乎都是图表(critical
metrics),类似驾驶室的转速表,时速表,让操作者可以迅速的了解系统当前的运作状态。联想到我们做的类似监控后台,数据很多,但往往还需要浏览者
做二次分析判断,像这样满屏都是图表的方法做得还不够,可以学习下这方面经验。 据John介绍可以从图表上看到系统的瓶颈-系统最弱的环节(web,
mq, cache, db?)
根据图表可以科学的制定系统容量规划,而不是事后救火。
* 配置管理
每个系统都需要一个自动配置管理系统,越早越好,这条一整理发到Twitter上去之后引起很多回应。
* Darkmode
配置界面可以enable/disable 高计算消耗或高I/O的功能,也相当于优雅降级,系统压力过大时取消一些非核心但消耗资源大的功能。
* 进程管理
Twitter做了一个”Seppaku” patch, 就是将Daemon在完成了n个requests之后主动kill掉,以保持健康的low memory状态,这种做法据了解国内也有不少公司是这样做。
* 硬件
Twitter将CPU由AMD换成Xeon之后,获得30%性能提升,将CPU由双核/4核换成8核之后,减少了40%的CPU, 不过John也说,这种升级不适合自己购买硬件的公司。
2. 代码协同经验
* Review制度
Twitter有上百个模块,如果没有一个好的制度,容易引起代码修改冲突,并把问题带给最终用户。所以Twitter有一强制的source code review制度, 如果提交的代码的svn comment没有”reviewed by xxx”, 则pre-commit脚本会让提交失败, review过的代码提交后会通过自动配置管理系统应用到上百台服务器上。 有@xiaomics同学在Twitter上马上就问,时间成本能否接受?如果有紧急功能怎么办?个人认为紧急修改时有两人在场,一人修改一人 review也不是什么难事。
* 部署管理
从部署图表可以看到每个发布版本的CPU及latency变化,如果某个新版本latency图表有明显的向上跳跃,则说明该发布版本存在问题。另外在监控首页列出各个模块最后deploy版本的时间,可以清楚的看到代码库的现状。
* 团队沟通
Campfire来协同工作,campfire有点像群,但是更适合协同工作。对于Campfire就不做更多介绍,可参考Campfire 官方说明。
3. cache
- Memcache key hash, 使用FNV hash 代替 MD5 hash,因为FNV更快。
- 开发了Cache Money plugin(Ruby), 给应用程序提供read-through, write-through cache , 就像一个db访问的钩子,当读写数据库的时候会自动更新cache, 避免了繁琐的cache更新代码。
- “Evictions make the cache unreliable for important configuration data”,Twitter使用memcache的一条经验是,不同类型的数据需放在不同的mc,避免eviction,跟作者前文Memcached数据被踢(evictions>0)现象分析 中的一些经验一致。
- Memcached SEGVs, Memcached崩溃(cold cache problem)据称会给这种高度依赖Cache的Web 2.0系统带来灾难,不知道Twitter具体怎么解决。
- 在Web层Twitter使用了Varnish作为反向代理,并对其评价较高。
相关推荐
FixingTwitter twitter运维资料
王亚雷-Twitter 千万 QPS 分布式系统的架构设计和高效运维
藏经阁-Twitter 千万 QPS 分布式系统的架构设计和高效运维.pdf
解剖Twitter的系统架构,揭示Twitter使用的共享软件;了解Twitter如何处理多并发、冲突事件的处理方法;
真实的Twitter系统结构分析 很珍贵的资料 研究Twitter系统结构对大型网站开发有很大的帮助
当今世界,公司的日常运营经常会...我们经常用的一个非常有效的开源实时计算工具就是Storm —— Twitter开发,通常被比作“实时的Hadoop”。然而Storm远比Hadoop来的简单,因为用它处理大数据不会带来新老技术的交替。
Twitter系统架构设计分析.pdf
基于Windows Mobile 6.0平台的Twitter系统的设计,郭顺,,本文应用Twitter官方网站开放的REST API提出了一种基于Windows Mobile 6.0平台的Twitter系统设计方案。首先介绍了Twitter应用、Twitter REST API和Window
CCHere 西西河友撰写的Twitter分析。
Android手机端twitter安装包 最新版本9.43.0 随时访问这个最大的社交网络 这款官方Twitter应用软件允许你随时随地访问全球最大的社交网络之一Twitter。 通过应用程序主页,你能够使用Twitter的一切常规功能:关注...
Twitter是世界上最流行的互联网服务,它为用户提供微博客服务,界面简洁美观。本文中,我们将使用jqueyr建立一个类twitter站点。你将学习jquery一些的技巧,以及如何一起使用PHP和mysql。你会喜欢的。
该资源包括了twitter4j先关jar包,包括twitter4j-core.jar,twitter4j-async.jar,twitter4j-media.jar,twitter-staream
#资源达人分享计划#
word2vec_twitter word2vec_twitter_model.bin
twitterAPI开发者账号申请流程,twitter账号注册帮助文档
Twitter手机端安装包--Android,twitter-8-56-0-release-00.apk
仿Twitter源代码 社交网络源码 基于脉聊二开版本这是一款类似于Twitter网站的源代码。利用原代码,你可以快速搭建自己的社交网络平台。程序语言是PHP。数据库采用Mysql。与此同时系统带有注册,评论,转发等功能。...
JAVA操作Twitter api使用例子,简单实用。一看就懂!