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