新聞發(fā)布
管理系統(tǒng)Facebook工程師帕羅斯基、亞當(dāng)斯和埃文斯是重構(gòu)Facebook基礎(chǔ)這項艱巨任務(wù)的核心人物
以下為文章全文:
18號樓位于Facebook加州門羅帕克新總部的邊緣地帶,繞到后面,就可以看到“作戰(zhàn)窯洞”(The Battle Cave)的遺跡。
今天,這里只是開放辦公空間的一種延伸,成排的Facebook員工在這里工作。但如果你看看右邊的墻上,就會發(fā)現(xiàn)有兩個曾經(jīng)放過平板顯示器的金屬支架。這就是喬爾·珀巴(Joel Pobar)和他的同事們每天追蹤進度的地方。
珀巴領(lǐng)導(dǎo)了一支優(yōu)秀的工程師團隊,負(fù)責(zé)為這個全球熱門的社交網(wǎng)絡(luò)重建基礎(chǔ)。他們至今已經(jīng)為該項目辛苦工作了三年多,但去年秋天有幾個星期,整個項目的進度停滯不前,甚至有可能永遠不見天日。他們當(dāng)時每天都在18號樓后面的這個房間里勞作,幾乎每時每刻都在重寫代碼,希望自己的作品能使用在這個全球大的網(wǎng)站上。
“作戰(zhàn)窯洞”的確名副其實。他們當(dāng)時不止在努力編寫代碼,還在跟時間賽跑。與斯坦利·庫布里克(Stanley Kubrick)扮演的奇愛博士(Dr. Strangelove)的“作戰(zhàn)室”(The War Room)一樣,這里的墻上也掛著一對顯示器,時時提醒他們注意工作進度,而終的成果將在Facebook未來的發(fā)展中扮演至關(guān)重要的角色。
他們后來搬出了“作戰(zhàn)窯洞”,但那兩個金屬支架依然保留下來,算是一個小小的提醒,讓人們不要忘卻Facebook當(dāng)年的那場豪賭——這場技術(shù)豪賭佐證了這家成立9年的企業(yè)所秉承的獨特態(tài)度,該公司創(chuàng)始人兼CEO馬克·扎克伯格(Mark Zuckerberg)將其稱作“黑客之道”。
“這是一場高風(fēng)險、高回報的賭博。我們現(xiàn)在的規(guī)模巨大,所以要存活下去,必須要冒巨大的風(fēng)險。”杰伊·帕里克(Jay Parikh)說,他是負(fù)責(zé)Facebook底層硬件和軟件設(shè)計及運營工作的工程副總裁。
要理解這場豪賭,先要把時鐘撥回到2003年末。如果你看過電影《社交網(wǎng)絡(luò)》,肯定知道這樣一幕:在那段寒冷的歲月里,扎克伯格在哈佛大學(xué)的寢室里開始著手開發(fā)他的社交網(wǎng)絡(luò)。
透視“黑客之道”
有關(guān)Facebook的創(chuàng)意源自何處,以及扎克伯格當(dāng)時的目的是什么,至今仍然存在爭議。但有一點是確定的:當(dāng)他著手開發(fā)這個網(wǎng)站時,使用了一種名為PHP的編程語言。
在扎克伯格這樣的網(wǎng)絡(luò)程序員中,PHP在2003年可謂風(fēng)靡一時。這種語言使得他們能以極快的速度開發(fā)和改造網(wǎng)絡(luò)軟件,繞過C++和Java等更加復(fù)雜的語言。但隨著時間的流逝,PHP這種快速開發(fā)的特點對Facebook和“黑客之道”的重要性也凸現(xiàn)出來。而正是“黑客之道”的理念不斷激勵扎克伯格和Facebook向前發(fā)展。Facebook的工程師樂于改變,而且樂于迅速改變。PHP為他們賦予了這種能力。
這是一種所謂的“動態(tài)”編程語言,無需花時間去定義程序中使用的每個變量的特定參數(shù)。“如果你讓滿滿一屋子的開發(fā)者編寫一款應(yīng)用,而且他們使用的是動態(tài)語言,他們就可以加快任務(wù)完成速度。”Facebook工程師基斯·亞當(dāng)斯(Keith Adams)說。
如今,F(xiàn)acebook在全球擁有超過10億的用戶,專門負(fù)責(zé)該網(wǎng)站的開發(fā)和改版工作的工程師也超過1000人,他們?nèi)栽谑褂肞HP。
從某種意義上講,這令人十分意外。盡管PHP是快速開發(fā)的理想工具,但卻不太適合規(guī)模如此龐大的網(wǎng)站。當(dāng)你用PHP,而不用C++等“靜態(tài)”語言開發(fā)網(wǎng)站時,可以加快開發(fā)進度,但卻需要使用更多的服務(wù)器來運行網(wǎng)站。所以,倘若用戶達到10億,光是服務(wù)器就是一筆不菲的開支。
然而扎克伯格和他的公司卻一直沿用了這種語言。他們沒有像Twitter那樣采用新的編程語言,而是發(fā)明了一種新的方式來大幅提升PHP的運行速度。從本質(zhì)上講,他們一直都在不斷更換網(wǎng)站的基礎(chǔ),但卻沒有改變網(wǎng)站本身。這就是所謂的“黑客之道”。
2010年,F(xiàn)acebook推出了一款名為HipHop的工具,可以在通過服務(wù)器執(zhí)行代碼前,將PHP代碼轉(zhuǎn)換成C++代碼。與純粹的PHP代碼相比,這種模式處理的流量高出五六倍之多。
“如果沒有HipHop,我們可能已經(jīng)陷入困境。我們所需要的服務(wù)器數(shù)量很可能超出了我們的能力。”Facebook工程師德魯·帕羅斯基(Drew Paroski)說,“背水一戰(zhàn)終起到了成效。”
但就在那次涉險過關(guān)后不久,帕羅斯基、亞當(dāng)斯和另外一名Facebook工程師詹森·埃文斯(Jason Evans)決定更進一步,讓Facebook永久擺脫這種困境。于是,他們?nèi)诉_成了共識,決定將PHP的性能提升到更高的水平,把HipHop替換成虛擬機——這種軟件可以在該網(wǎng)站的PHP代碼和服務(wù)器硬件之間產(chǎn)生更大的協(xié)同效應(yīng)。
他們決定放棄將PHP轉(zhuǎn)換成C++的方式,轉(zhuǎn)而將其直接轉(zhuǎn)換成機器代碼——也就是服務(wù)器芯片所使用的語言——而且會在代碼執(zhí)行過程中完成這一轉(zhuǎn)換。通過實時追蹤網(wǎng)站的運行方式,他們可以更好地了解如何將其轉(zhuǎn)換成機器代碼,從而終提升速度。“HipHop似乎完全可以被擊敗。”亞當(dāng)斯回憶說。
這個想法很大膽,畢竟HipHop當(dāng)時剛剛上線,況且開發(fā)這種虛擬機是一項規(guī)模龐大的任務(wù),通常要由甲骨文、微軟和VMware這樣的公司來完成。這些公司的目標(biāo)就是創(chuàng)造這種“系統(tǒng)軟件”,也就是支撐我們的電腦系統(tǒng)運行的核心軟件。
原創(chuàng)不易,未經(jīng)授權(quán),嚴(yán)禁轉(zhuǎn)載
原文地址:http://www.mpian.cn/web/extension/2014-05-04/1594.html