在降低运营成本和防止服务中断并进行扩容方面,Twitter已经大幅改变了它的核心基础设施,在此过程中使用了大量的开源码工具。
Twitter每秒处理约6000条消息,加起来每天处理超过5亿或每周35亿条消息。在高峰时间,今年早些时候日本播出《天空之城》期间Twitter创纪录地每秒处理143000条消息,Twitter的开源计算负责人Chris Aniszczyk在上星期一在欧洲爱丁堡LinuxCon期间在Twitter 上说到。
处理这种数量级的消息已经成为公司面临的挑战,Aniszczyk说。Twitter在2006创建初期使用的是单机的Ruby on Rails应用而不是分布式平台。这在当时能够很好的工作因为那是服务不那么忙,但这个初始配置在2008年出现了成长的痛苦,很多失败的鲸鱼——Twitter团队用来描述服务中断的术语——开始出现。
Twitter的工程师们只能通过不断打补丁来保持应用基本可用,Aniszczyk说。2010年世界杯期间,问题更明显地暴露了出来,这是Twitter的一个高点但同时又是一个低点。尽管服务突破了每秒处理3000个消息,但很难将如此数量的消息发送出去。
“这很痛苦,因为从工程师的角度看所有都已就绪,”Aniszczyk说。任何时刻任何人进了一个球或者得到红黄牌,网站就宕机了,他说。
所以需要改变。在分析状况后,Twitter决定使用一个代码库来处理包括管理原始数据信息到图形化渲染网站的所有事。“为了保持运行我们本质上要做的是针对这个问题使用许多的机器。这不是最好的解决方法,因为花费昂贵。”Aniszczyk说。
相对于提升系统和开发新特性,Twitter的工程师“鲸鱼狩猎远征”的方式来解决特定的问题,而这真的不是公司需要做的。
Twitter最终决定是时候在新基础设施上投入,最终在JVM(Java虚拟机)上分拆。这使得它们打破了整体性,在不同的服务上,比如特定处理信息的一个服务,有单独的应用,Aniszczyk说。现在工程已经提供给大部分自包含,可独立运行的组。
为了削减花费,减少使用的机器数量,Twitter也转向Apache Mesos,最初始于在Berkeley的加利福尼亚大学的一个研究项目。Mesos是一个集群管理器,允许用户在同一个机器上运行多个进程,这样可以更加有效的利用硬件来节省金钱,Aniszczyk说。
Twitter也使用其他工具,如Netty,被设计用来创建高性能协议服务器,Scalding,使得写入大数据的任务更加简单。Twitter还不能完全从Ruby on Rails应用框架上移出,但这些工具,通过把核心基础设施转向JVM的联合,已经帮助公司避免失败,并提高了性能,Aniszczyk说。
“这相当程度上使我们能够像一家公司一样成长,”他补充道。Twitter有超过2000名员工,一半是工程师,他说。
Twitter学到的之一是把基础设施放在开源上是个很棒的主意。Aniszcsyk说,“那是现在你能找到最好软件的地方,”,并补充说能回馈开源社区也很好,Twitter在twitter.github.io上列出了100个公开的仓库。
增量式的改变也是个好主意,他说。"如果你以每次一小步的方式做事,会增加获得成功的机会" 他说,而且公司应该不断的向大学学习。
Twitter为改变它的核心基础设施而做出的努力,是公司如何才能从开源技术中获益的一个很好的例子,Jim Zemlin如是说,他是Linux基金会的执行官。"这使得费用下降,也使得他们在基础设施规模上遇到的挑战很快的得到满足"他说。
许多商业机构,包括一些大公司,比如Google, Amazon和Facebook,都在创建超大规模的开源计算平台,Zemlin 说可以向借鉴学习。
2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务