最近看到的另外一个介绍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作为反向代理,并对其评价较高。
相关推荐
### Fixing Twitter: Twitter运维资料解析 #### 一、运维团队与挑战 **标题与描述**:“FixingTwitter twitter运维资料”明确指出本资料聚焦于Twitter运维中的问题及解决方案。 **核心要点**: - **小而迅速成长...
Twitter 千万 QPS 分布式系统的架构设计和高效运维 从给定的文件信息中,我们可以获得以下知识点: 1. 分布式系统架构设计:文章讨论了 Twitter 千万 QPS 分布式系统的架构设计,涉及到数据系统的设计、存储类型、...
《Twitter系统结构分析》 Twitter,作为全球知名的社交媒体平台,其背后复杂的系统结构设计对于大型网站的开发具有极高的学习价值。这篇分析将深入探讨Twitter的核心技术架构,以期为大型网站开发者提供宝贵的经验...
- **精准运维**:随着系统规模的扩大,运维人员需要更加精确地监控和预测潜在的问题。 - **智能运维**:利用机器学习等技术提高自动化水平,减少人工干预。 - **自动化运维**:构建自动化的工具和流程来提升运维效率...
标题提及的是“Twitter的memcached改造 Twemcache”,这指的是Twitter对原始的开源内存缓存系统memcached进行优化和定制的版本,名为Twemcache。Twemcache是为了解决在大规模分布式环境下的缓存挑战而诞生的。 描述...
第三方社交平台集成:Facebook与Twitter.docx Phaser引擎社交游戏开发:社交系统开发_(15).第三方社交平台集成:微信与QQ.docx Phaser引擎社交游戏开发:社交系统开发_(16).跨平台适配与优化:Web与移动设备....
Twitter 运维经验是指使用Twitter的运维经验。 运维经验是指分布式系统的运维经验。 Metrics是指分布式系统的性能Metrics。 配置管理是指分布式系统的配置管理。 Darkmode是指分布式系统的Darkmode。 进程管理...
同时,定期备份数据库,以防止数据丢失,也是系统运维的重要环节。 总的来说,"PHP学生成绩管理系统"结合了PHP的动态网页功能、Bootstrap的响应式设计以及MySQL的数据库存储,提供了一个全面、实用的解决方案,适用...
Zipkin 是Twitter开源的调用链追踪系统,它采用非侵入式的方式,通过运行期字节码增强,对多语言支持良好。Apache Skywalking 是一个成熟的APM(应用性能监控)工具,具有良好的社区支持和Apache背书,支持多种语言...
讲述了Dapper在谷歌内部两年的演变和设计、运维经验,Twitter也根据该论文开发了自己的分布式跟踪系统Zipkin,并将其开源,但不知为啥没有贡献给Apache。其实还有很多的分布式跟踪系统,比如Apache的HTrace,阿里的...
4. **Bootstrap**:Bootstrap是由Twitter开发的开源前端框架,包含了丰富的HTML、CSS和JS组件,如栅格系统、表单、按钮、导航、模态框等,能快速构建响应式布局和移动设备优先的网页。 5. **教务后台管理系统**:...
- **5.4 Twitter运维经验**: - **运维经验**:Twitter在运维过程中积累的最佳实践。 - **代码协同经验**:代码协同过程中遇到的问题及解决方案。 - **Cache**:介绍Twitter如何利用缓存技术提高系统性能。 - **...
通过学习上述内容,可以系统地掌握分布式操作系统的核心概念和技术,为今后从事分布式系统设计、开发和运维工作打下坚实的基础。这些课件将全面覆盖分布式操作系统的理论与实践,帮助学习者深入理解这个复杂而有趣的...
4. **API接口集成**:社交管理系统往往需要与第三方平台(如Facebook、Twitter)进行数据交换,因此会涉及到API接口的调用和管理。这可能涉及到OAuth认证、RESTful API的设计和使用等技术。 5. **安全性**:保护...
- **Twitter运维经验**:社交媒体平台在数据处理与实时分析方面的挑战与应对策略。 #### 运维经验 - **Metrics**:监控系统性能指标的重要性。 - **配置管理**:分布式系统中配置文件的统一管理和维护。 - **Dark...
10. **部署与运维**:完成开发后,系统需要部署到服务器,可能涉及Nginx、Apache等Web服务器配置,以及Docker容器化部署等技术。运维监控则包括日志分析、性能监控、安全设置等。 以上就是关于这个项目的一些核心...
这样的系统通常允许用户发布短消息、分享想法、进行互动,类似于Twitter或者微博服务。开源意味着其源代码是公开的,允许开发者查看、修改和分发代码,为用户提供高度的自定义和扩展性。 【描述】:“源码开源好用...
Bootstrap是由Twitter推出的一款开源前端开发框架,它为开发者提供了丰富的预设样式、组件和JavaScript插件,极大地简化了网页的布局和设计工作。Bootstrap的核心特性包括响应式设计、移动设备优先和易于定制。在本...
【Storm】由Twitter开源,它允许开发者创建持续不断的计算流,即数据一旦进入系统,就会被实时处理,而不是等待批处理。这种特性使得Storm非常适合实时日志分析,可以迅速对日志数据进行过滤、聚合、统计等多种操作...