未來(lái)的云計(jì)算語(yǔ)言?Go 在 Google 內(nèi)部崛起
前VMware云平臺(tái)首席技術(shù)官Derek Collison曾斷言Go語(yǔ)言兩年內(nèi)將成為云計(jì)算的主流語(yǔ)言,這也許有些聳人聽(tīng)聞,但Go語(yǔ)言在Google內(nèi)部確實(shí)取得了令人矚目的成績(jī)。Wired 最近發(fā)表文章講述了Go語(yǔ)言在Google內(nèi)部崛起的故事,編譯整理如下:
當(dāng)一部分“老弱”程序代碼不能正常工作時(shí),Google就會(huì)派出負(fù)責(zé)Go語(yǔ)言項(xiàng)目的“地鼠特工隊(duì)”負(fù)責(zé)除舊迎新。
Brad Fitzpatrick在使用Google軟件最常用的功能時(shí)卡住了——下載進(jìn)度條在99%的地方停下了。雖然下載失敗是很常見(jiàn)的問(wèn)題,但 Fitzpatrick卻并無(wú)遷就之意,他是地球上最懂技術(shù)的企業(yè)——Google的工程師,他不能容忍此類問(wèn)題發(fā)生在Google身上。
“1k大的文件都托管不好對(duì)Google來(lái)說(shuō)是很丟人的事情,”Fitzpatrick在上周俄勒岡的開(kāi)源大會(huì)上說(shuō)道,“所以我在內(nèi)部的Google+站點(diǎn)上就此問(wèn)題大吐其槽。”
其實(shí)Fitzpatrick并不孤單,多年來(lái)很多人都曾抱怨dl.google.com系統(tǒng)不夠穩(wěn)定,而該系統(tǒng)極其重要,處理幾乎所有Google的下載任務(wù),包括Chrome瀏覽器安裝文件、Android源代碼,到體積小些的JavaScript庫(kù)。
問(wèn)題的根源是該文件服務(wù)器系統(tǒng)的底層代碼的年齡已經(jīng)超過(guò)五年,可謂破敗不堪。
“如果代碼不能得到持續(xù)的關(guān)愛(ài)就會(huì)變成一堆屎,”Fitzpatrick說(shuō)道。
最初的C++代碼缺乏規(guī)范的文檔,自動(dòng)化測(cè)試也不達(dá)標(biāo),沒(méi)有人能搞明白它是如何工作的。人們只是不停地做一些增量改變,最后在負(fù)責(zé)維護(hù)的程序員眼 里,這些代碼變成了“一坨面條”。系統(tǒng)的不穩(wěn)定差不多要把服務(wù)器運(yùn)營(yíng)團(tuán)隊(duì)逼瘋了,但是沒(méi)有人有時(shí)間重寫技術(shù)上還能使用的代碼。于是Fitzpatrick 自告奮勇接手這個(gè)任務(wù),他來(lái)自Google的一個(gè)25位工程師組成的團(tuán)隊(duì)——地鼠隊(duì),負(fù)責(zé)開(kāi)發(fā)一種定制化的編程語(yǔ)言——Go.
Fitzpatrick對(duì)重寫依然在生產(chǎn)環(huán)境使用的代碼感到非常興奮,因?yàn)樗K于有機(jī)會(huì)能在真實(shí)的系統(tǒng)中測(cè)試Go了。
Dennis Ritchie (站立者)與 Ken Thompson在最早的小型機(jī) PDP-11 前工作, 1972年 Photo:Courtesy of Bell Labs
Go由計(jì)算機(jī)科學(xué)的三位大神Robert Griesemer、Rob Pike和Ken Thompson共同創(chuàng)建。Thompson也是Unix操作系統(tǒng)的聯(lián)合開(kāi)發(fā)者,同時(shí)也是C語(yǔ)言之父。Pike則是Thompson在貝爾實(shí)驗(yàn)室的同事。 Griesemer因在Java編譯器方面的工作而廣為人知。
Go的初衷是實(shí)現(xiàn)即能像古怪的電信語(yǔ)言Erlang或流行的服務(wù)器端javaScript平臺(tái)Node.js那樣處理大規(guī)模并發(fā)用戶,同時(shí)又能像C++那樣迅捷。一個(gè)很夠處理大規(guī)模并發(fā)下載請(qǐng)求的分布式文件系統(tǒng)應(yīng)當(dāng)是最能發(fā)揮Go長(zhǎng)處的應(yīng)用。
事實(shí)也是如此,新的用Go編寫的dl.google.com軟件代碼上簡(jiǎn)潔不少,內(nèi)存開(kāi)銷也更少,更重要的是,更加可靠。Fitzpatrick表示在開(kāi)發(fā)過(guò)程中更加深入了解了Go,開(kāi)發(fā)了一個(gè)新的開(kāi)源緩存庫(kù),同時(shí)也發(fā)現(xiàn)了Go語(yǔ)言的一些不足。
“很榮幸我是第一個(gè)體驗(yàn)此類痛點(diǎn)的人,”在接受開(kāi)源大會(huì)上接受采訪時(shí)Fitzpatrick表示,Google的團(tuán)隊(duì)在用Go處理集群和文件傳輸時(shí) 進(jìn)行了很多改進(jìn)。項(xiàng)目大獲成功,如今Go團(tuán)隊(duì)開(kāi)始經(jīng)常幫助其他團(tuán)隊(duì)完成小項(xiàng)目。正如Griesemer所言:這只“地鼠特工隊(duì)”對(duì)研究團(tuán)隊(duì)、Chrome 團(tuán)隊(duì)、客戶調(diào)查團(tuán)隊(duì)以及其他“有關(guān)團(tuán)隊(duì)”也提供了很多幫助。
雖然Go語(yǔ)言在Google內(nèi)部戰(zhàn)績(jī)彪炳,但是“地鼠特工隊(duì)”并未在Google內(nèi)部呼吁用Go全面取代其他編程語(yǔ)言。不少團(tuán)隊(duì)不希望改變目前使用 的語(yǔ)言,也不愿做重復(fù)開(kāi)發(fā)。Google開(kāi)源經(jīng)理Chris DiBona認(rèn)為:對(duì)于不同的任務(wù)我們會(huì)使用最好的軟件來(lái)完成,無(wú)論這些軟件是Java、Python或是什么別的語(yǔ)言編寫的。對(duì)于這一 點(diǎn),F(xiàn)itzpatrick也表示贊同。
Go語(yǔ)言目前在Google以外的應(yīng)用還很少,但在業(yè)界依然引起了重視。
前VMware云平臺(tái)首席技術(shù)官Derek Collison曾斷言Go語(yǔ)言兩年內(nèi)將成為云計(jì)算的主流語(yǔ)言:
管理層和基礎(chǔ)架構(gòu)層決定了云計(jì)算的交付模型,兩年內(nèi)大多數(shù)云程序都將用Go語(yǔ)言編寫。
此外,網(wǎng)游公司Zynga和NTT DoCoMo都在使用的開(kāi)源數(shù)據(jù)庫(kù)Couchbase就是部分用Go編寫的,其開(kāi)發(fā)者還用到了Erlang、C和C++。但是Couchbase的軟件架構(gòu)師J.Chris Anderson表示Go是最棒的:
我們發(fā)現(xiàn)Go的并發(fā)模型與Erlang、C和C++的幾乎一樣強(qiáng)大,而且是對(duì)開(kāi)發(fā)者非常友好的一種系統(tǒng)。
Collison對(duì)Go的預(yù)言也許有些夸大,但他新創(chuàng)立的云計(jì)算公司Apcera確實(shí)已經(jīng)在使用Go語(yǔ)言,而且目前Go語(yǔ)言已經(jīng)有了一個(gè)重大的成功案例,那就是Google自己,新的dl.google.com系統(tǒng)的可靠性得到了大幅提升。
原文鏈接:http://www.ctocio.com/ccnews/13061.html