未來的雲端計算語言?Go在Google內部崛起

袁野發表於2013-07-30

enter image description here

前VMware雲平臺技術長Derek Collison曾斷言Go語言兩年內將成為雲端計算的主流語言,這也許有些聳人聽聞,但Go語言在Google內部確實取得了令人矚目的成績。Wired最近發表文章講述了Go語言在Google內部崛起的故事。

當一部分“老弱”程式程式碼不能正常工作時,Google就會派出負責Go語言專案的“地鼠特工隊”負責除舊迎新。

Brad Fitzpatrick在使用Google軟體最常用的功能時卡住了——下載進度條在99%的地方停下了。雖然下載失敗是很常見的問題,但Fitzpatrick卻並無遷就之意,他是地球上最懂技術的企業——Google的工程師,他不能容忍此類問題發生在Google身上。

“1k大的檔案都託管不好對Google來說是很丟人的事情,”Fitzpatrick在上週俄勒岡的開源大會上說道,“所以我在內部的Google+站點上就此問題大吐其槽。”

其實Fitzpatrick並不孤單,多年來很多人都曾抱怨dl.google.com系統不夠穩定,而該系統極其重要,處理幾乎所有Google的下載任務,包括Chrome瀏覽器安裝檔案、Android原始碼,到體積小些的JavaScript庫。

問題的根源是該檔案伺服器系統的底層程式碼的年齡已經超過五年,可謂破敗不堪。

“如果程式碼不能得到持續的關愛就會變成一堆屎,”Fitzpatrick說道。

最初的C++程式碼缺乏規範的文件,自動化測試也不達標,沒有人能搞明白它是如何工作的。人們只是不停地做一些增量改變,最後在負責維護的程式設計師眼裡,這些程式碼變成了“一坨麵條”。系統的不穩定差不多要把伺服器運營團隊逼瘋了,但是沒有人有時間重寫技術上還能使用的程式碼。於是Fitzpatrick自告奮勇接手這個任務,他來自Google的一個25位工程師組成的團隊——地鼠隊,負責開發一種定製化的程式語言——Go.

Fitzpatrick對重寫依然在生產環境使用的程式碼感到非常興奮,因為他終於有機會能在真實的系統中測試Go了。 enter image description here
Dennis Ritchie (站立者)與 Ken Thompson在最早的小型機 PDP-11 前工作, 1972年 Photo:Courtesy of Bell Labs

Go由電腦科學的三位大神Robert Griesemer、Rob Pike和Ken Thompson共同建立。Thompson也是Unix作業系統的聯合開發者,同時也是C語言之父。Pike則是Thompson在貝爾實驗室的同事。Griesemer因在Java編譯器方面的工作而廣為人知。

Go的初衷是實現即能像古怪的電信語言Erlang或流行的伺服器端javaScript平臺Node.js那樣處理大規模併發使用者,同時又能像C++那樣迅捷。一個很夠處理大規模併發下載請求的分散式檔案系統應當是最能發揮Go長處的應用。

事實也是如此,新的用Go編寫的dl.google.com軟體程式碼上簡潔不少,記憶體開銷也更少,更重要的是,更加可靠。Fitzpatrick表示在開發過程中更加深入瞭解了Go,開發了一個新的開源快取庫,同時也發現了Go語言的一些不足。

“很榮幸我是第一個體驗此類痛點的人,”在接受開源大會上接受採訪時Fitzpatrick表示,Google的團隊在用Go處理叢集和檔案傳輸時進行了很多改進。專案大獲成功,如今Go團隊開始經常幫助其他團隊完成小專案。正如Griesemer所言:這隻“地鼠特工隊”對研究團隊、Chrome團隊、客戶調查團隊以及其他“有關團隊”也提供了很多幫助。

雖然Go語言在Google內部戰績彪炳,但是“地鼠特工隊”並未在Google內部呼籲用Go全面取代其他程式語言。不少團隊不希望改變目前使用的語言,也不願做重複開發。Google開源經理Chris DiBona認為:對於不同的任務我們會使用最好的軟體來完成,無論這些軟體是Java、Python或是什麼別的語言編寫的。對於這一點,Fitzpatrick也表示贊同。

Go語言目前在Google以外的應用還很少,但在業界依然引起了重視。

前VMware雲平臺技術長Derek Collison曾斷言Go語言兩年內將成為雲端計算的主流語言:管理層和基礎架構層決定了雲端計算的交付模型,兩年內大多數雲程式都將用Go語言編寫。

此外,網遊公司Zynga和NTT DoCoMo都在使用的開源資料庫Couchbase就是部分用Go編寫的,其開發者還用到了Erlang、C和C++。但是Couchbase的軟體架構師J.Chris Anderson表示Go是最棒的:我們發現Go的併發模型與Erlang、C和C++的幾乎一樣強大,而且是對開發者非常友好的一種系統。

Collison對Go的預言也許有些誇大,但他新創立的雲端計算公司Apcera確實已經在使用Go語言,而且目前Go語言已經有了一個重大的成功案例,那就是Google自己,新的dl.google.com系統的可靠性得到了大幅提升。

未來的雲端計算語言?Go在Google內部崛起

Go語言崛起在即,對這門語言還不瞭解的程式設計師,趕緊看看許式偉老師的《Go語言程式設計》補補吧。

原文地址:http://www.wired.com/wiredenterprise/2013/07/gopher
譯文轉自IT經理網:http://www.ctocio.com/ccnews/13061.html

相關文章