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