从Ruby迁移到Java上后,Twitter没有在美国总统竞选期间宕机

周二晚上,在美国2012年总统大选揭晓的时刻,微博网站Twitter遭遇了有史以来最大的访问冲击,服务的负载量陡增,但却没让用户感到丝毫的反应迟钝——一些Twitter的开发人员把这归功于公司把后端软件从Ruby迁移到Java的正确决策。

根据Twitter公司负责架构的副总工程师Mazen Rawashdeh在 博客上透露的信息,周二在太平洋时间的晚上8:11分到9:11分期间,Twitter用户平均每秒钟发布9965条信息。

Rawashdeh写到,在8:20分里的有一个一秒里,Twitter用户共写出了15107条新微博,在访问量最顶峰的那一分钟里,人们共制造了874560条信息。

这样的数量对于Twitter来说是很不寻常的,Rawashdeh说,这表明人们对Twitter服务使用上了一个新台阶。而在过去,在一些特殊的日子里,Twitter曾经经历过短暂的服务停顿,比如平安夜或运动的闭幕式,而像这次这样长时间持续的高访问量的状况,还是头一遭。这也是Twitter网站开创以来在竞选期间遇到的最大的一次访问冲击。

在过去,Twitter用户一般都会知道,在这样大的负载压力下,Twitter服务通常会出问题。在Twitter早年,服务宕机如此常见,以至于网站有创意的“休克大鲸鱼”的报错界面成了Web2.0大众的文化标识。

但是,周二晚上由于竞选而带来的访问量冲击却一点没有撼动它,Rawashdeh把这归功于Twitter仍在进行的把后端服务从Ruby和Ruby on Rails框架迁移到基于Java虚拟机(JVM)的新技术架构的工作。

twitter fail_whale

当Twitter运行在Ruby上时,这休克大鲸鱼会经常的出现在你面前,但使用Java后,不多见了。

当Twitter运行在Ruby上时,这休克大鲸鱼会经常的出现在你面前,但使用Java后,不多见了。

Twitter首次撤离Ruby起于2008年,引用前Twitter开发者Alex Payne的话,当时公司的基于Ruby的消息队列系统(mq)”摔了个跟头”。

“Ruby擅长于做很多事情,”当时Payne说,“但对于长时间的处理过程,尤其是需要大量内存的操作,并不是很在行。”

Twitter对于此种情况的解决方案是,把部分的Ruby程序移植到基于JVM的架构上。起初,公司的开发团队拒绝Java而偏爱Scala——另一种JVM上的编程语言,混合有面向对象和面向过程等多种语言特征。如今,Twitter里程序是Scala程序和普通Java程序的复合体。

但有一部分Twitter服务仍然运行于Ruby之上,但根据Rawashdeh的说法,对Ruby的使用会逐渐减少。特别的他提到,Twitter系统正在进行重新配置,这样一来,来自移动设备的访问再也不会接触到任何的基于Ruby的程序。

而Twitter中使用的Ruby程序是部署在一个定制的,高度优化过得Ruby runtime上的,专门针对执行长处理操作而进行更高效管理内存的优化。

对那些钟爱Ruby的语法、Ruby的快速开发效率、以及所有这种语言的编程理念的狂热粉丝来说、这真不是一个受欢迎的消息。他们认为跟其它语言比起来性能问题并不重要,Ruby在性能上的劣势,并不能掩盖这种语言优雅的语法、高效的生产率、以及它的所有编程哲理上的光芒。

但对于Twitter来说,结果才是重要的。“底线:无论人们何时、何地、何种方式访问Twitter,我们都要保持它24/7小时的可访问,在世界任何一个角落。”Rawashdeh写到,“我们为这个目标奋斗不止。”

他们干的不错。根据这汹涌的跟竞选相关的评论来看,在奥巴马做美国总统的第二届任期里,Twitter的平均访问量将会继续攀升。

[英文原文:Twitter survives election after Ruby-to-Java move ]
分享这篇文章:

12 Responses to 从Ruby迁移到Java上后,Twitter没有在美国总统竞选期间宕机

  1. Jong says:

    对Ruby的粉丝来说确实不是一个好消息

    • 流年 says:

      不同时期,不同目标的选择而已,Matz 在访谈时有说到这个问题(http://www.ituring.com.cn/article/17487):

      在我看来,在网站所提供的服务还没有完全成型的时候,最重要的是能够对需求的变化做出快速的反应,这个时候就需要Ruby这样灵活性比较高的语言;而在网站获得成功之后,遇到了设计瓶颈,用一种新的语言,比如Scala,来编写一个新的架构,以节约一定的资源,我认为这也是很好的一个结果。Twitter转向Scala还只是在其核心部分,而在Web前端和一些内部工具上还有很多地方在用Ruby

  2. lys says:

    “但对于Twitter来说,结果才是重要的。“底线:无论人们何时、何地、何种方式访问Twitter,我们都要保持它24/7小时的可访问,在世界任何一个角落。””
    看到这句话我笑了。

  3. yafat says:

    我也笑了

  4. RubyfaN says:

    一如既往支持Ruby,Ruby比java厉害地方多的是

  5. cyler123 says:

    结果让我想到的是:
    Perl,就这么被无视了。大家都喜欢新技术啊~

  6. 徐风子 says:

    我在想新浪微博的 访问压力现在有多大呀,应该已经超过twitter了吧。

  7. 甄码农 says:

    根据这个觉得java比ruby优秀是不靠谱的。把ruby换成java期间肯定也参考了很多用ruby时出错的经验。

    语言之争是无聊的。

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据