從Ruby遷移到Java上后,Twitter沒有在總統(tǒng)競選期間宕機
周二晚上,在美國2012年總統(tǒng)大選揭曉的時刻,微博網(wǎng)站Twitter遭遇了有史以來最大的訪問沖擊,服務(wù)的負載量陡增,但卻沒讓用戶感到絲毫的反應(yīng)遲鈍——一些Twitter的開發(fā)人員把這歸功于公司把后端軟件從Ruby遷移到Java的正確決策。
根據(jù)Twitter公司負責架構(gòu)的副總工程師Mazen Rawashdeh在 博客上透露的信息,周二在太平洋時間的晚上8:11分到9:11分期間,Twitter用戶平均每秒鐘發(fā)布9965條信息。
Rawashdeh寫到,在8:20分里的有一個一秒里,Twitter用戶共寫出了15107條新微博,在訪問量最頂峰的那一分鐘里,人們共制造了874560條信息。
這樣的數(shù)量對于Twitter來說是很不尋常的,Rawashdeh說,這表明人們對Twitter服務(wù)使用上了一個新臺階。而在過去,在一些特殊 的日子里,Twitter曾經(jīng)經(jīng)歷過短暫的服務(wù)停頓,比如平安夜或運動的閉幕式,而像這次這樣長時間持續(xù)的高訪問量的狀況,還是頭一遭。這也是 Twitter網(wǎng)站開創(chuàng)以來在競選期間遇到的最大的一次訪問沖擊。
在過去,Twitter用戶一般都會知道,在這樣大的負載壓力下,Twitter服務(wù)通常會出問題。在Twitter早年,服務(wù)宕機如此常見,以至于網(wǎng)站有創(chuàng)意的“休克大鯨魚”的報錯界面成了Web2.0大眾的文化標識。
但是,周二晚上由于競選而帶來的訪問量沖擊卻一點沒有撼動它,Rawashdeh把這歸功于Twitter仍在進行的把后端服務(wù)從Ruby和Ruby on Rails框架遷移到基于Java虛擬機(JVM)的新技術(shù)架構(gòu)的工作。
當Twitter運行在Ruby上時,這休克大鯨魚會經(jīng)常的出現(xiàn)在你面前,但使用Java后,不多見了。
當Twitter運行在Ruby上時,這休克大鯨魚會經(jīng)常的出現(xiàn)在你面前,但使用Java后,不多見了。
Twitter首次撤離Ruby起于2008年,引用前Twitter開發(fā)者Alex Payne的話,當時公司的基于Ruby的消息隊列系統(tǒng)(mq)”摔了個跟頭”。
“Ruby擅長于做很多事情,”當時Payne說,“但對于長時間的處理過程,尤其是需要大量內(nèi)存的操作,并不是很在行。”
Twitter對于此種情況的解決方案是,把部分的Ruby程序移植到基于JVM的架構(gòu)上。起初,公司的開發(fā)團隊拒絕Java而偏愛Scala—— 另一種JVM上的編程語言,混合有面向?qū)ο蠛兔嫦蜻^程等多種語言特征。如今,Twitter里程序是Scala程序和普通Java程序的復合體。
但有一部分Twitter服務(wù)仍然運行于Ruby之上,但根據(jù)Rawashdeh的說法,對Ruby的使用會逐漸減少。特別的他提到,Twitter系統(tǒng)正在進行重新配置,這樣一來,來自移動設(shè)備的訪問再也不會接觸到任何的基于Ruby的程序。
而Twitter中使用的Ruby程序是部署在一個定制的,高度優(yōu)化過得Ruby runtime上的,專門針對執(zhí)行長處理操作而進行更高效管理內(nèi)存的優(yōu)化。
對那些鐘愛Ruby的語法、Ruby的快速開發(fā)效率、以及所有這種語言的編程理念的狂熱粉絲來說、這真不是一個受歡迎的消息。他們認為跟其它語言比 起來性能問題并不重要,Ruby在性能上的劣勢,并不能掩蓋這種語言優(yōu)雅的語法、高效的生產(chǎn)率、以及它的所有編程哲理上的光芒。
但對于Twitter來說,結(jié)果才是重要的。“底線:無論人們何時、何地、何種方式訪問Twitter,我們都要保持它24/7小時的可訪問,在世界任何一個角落。”Rawashdeh寫到,“我們?yōu)檫@個目標奮斗不止。”
他們干的不錯。根據(jù)這洶涌的跟競選相關(guān)的評論來看,在奧巴馬做美國總統(tǒng)的第二屆任期里,Twitter的平均訪問量將會繼續(xù)攀升。
英文原文:Twitter survives election after Ruby-to-Java move
譯文鏈接:http://www.oschina.net/news/34891/twitter_epic_traffic_saved_by_java