北京時(shí)間3月7日消息,《連線》周二刊登了一篇署名為卡德梅茨(Cade Metz)的評(píng)論文章,借谷歌(微博)網(wǎng)絡(luò)帝國(guó)最核心的軟件系統(tǒng)伯格(Borg)分析了Twitter如何重建谷歌的秘密武器。
原文如下:
約翰威爾克斯(John Wilkes)說(shuō),加入谷歌就象是《黑客帝國(guó)》中的尼歐(Neo)吞下紅藥丸一樣,那就是選擇了覺(jué)醒。
4年前,威爾克斯只是知道谷歌這家公司而已。他與蕓蕓眾生一樣,每天的生活都與谷歌的各種服務(wù)如谷歌搜索、Gmail、谷歌地圖等息息相關(guān)。隨后,他加入了谷歌網(wǎng)絡(luò)帝國(guó)最核心的工程技術(shù)團(tuán)隊(duì),那個(gè)技術(shù)團(tuán)隊(duì)就相當(dāng)于谷歌的大腦,支持谷歌所有的網(wǎng)絡(luò)服務(wù)所需的最基本的硬件和軟件系統(tǒng)都是由他們?cè)O(shè)計(jì)的。
這些系統(tǒng)橫跨在一個(gè)全球性的數(shù)據(jù)中心網(wǎng)絡(luò)之上,每一秒處理的網(wǎng)絡(luò)指令高達(dá)數(shù)十億條。威爾克斯第一次看到那些系統(tǒng)工作時(shí)的場(chǎng)景時(shí),他感覺(jué)自己就象是吞下了紅藥丸之后的尼歐一樣,擺脫了矩陣(Matrix)創(chuàng)造的虛擬世界,突然就看到了一個(gè)由無(wú)數(shù)機(jī)器組成的龐大網(wǎng)絡(luò)。
看著龐大的網(wǎng)絡(luò),他變得不知所措了。要知道,他可是一位在惠普試驗(yàn)室工作了25年的資深研究員,多年來(lái)一直在從事現(xiàn)代計(jì)算最先進(jìn)技術(shù)的研究工作。
威爾克斯說(shuō):“我是過(guò)去時(shí)代的人,我認(rèn)為兆級(jí)容量就已經(jīng)很大了。但是等我到了谷歌之后,我必須在所有的數(shù)據(jù)后面都加上3個(gè)0。”他解釋說(shuō),那種感覺(jué)就象是一個(gè)人從生活了很多年的小地方突然來(lái)到一個(gè)全新的廣闊天地一樣。在谷歌,某個(gè)存儲(chǔ)數(shù)據(jù)的系統(tǒng)剩余的空間還剩幾個(gè)PB(存儲(chǔ)容量單位,1PB=1000GB=1000000MB)時(shí),系統(tǒng)就會(huì)向管理員發(fā)出警報(bào)。換句話說(shuō),只要幾個(gè)小時(shí),谷歌數(shù)據(jù)中心里的一組設(shè)備就會(huì)被海量的數(shù)據(jù)填滿。
當(dāng)他還在絞盡腦汁地想象谷歌的數(shù)據(jù)中心帝國(guó)到底有多大時(shí),威爾克斯接到任務(wù),負(fù)責(zé)開(kāi)發(fā)支持谷歌整個(gè)網(wǎng)絡(luò)帝國(guó)的軟件系統(tǒng)。
這個(gè)軟件系統(tǒng)被稱(chēng)作“伯格”(Borg)系統(tǒng),它也是谷歌之所以能夠迅速成為互聯(lián)網(wǎng)上最強(qiáng)大的力量背后的最隱秘的機(jī)密之一。威爾克斯甚至都不愿叫它“伯格”。他說(shuō):“我寧愿稱(chēng)之為不會(huì)被命名的系統(tǒng)。”但他透露,谷歌使用該系統(tǒng)已有9、10年的光景了。他和他的團(tuán)隊(duì)正在開(kāi)發(fā)一個(gè)新版本的工具,產(chǎn)品代碼為“歐米茄”(Omega)。
伯格系統(tǒng)可以非常高效地將任務(wù)分配到谷歌數(shù)量龐大的計(jì)算機(jī)服務(wù)器中去。威爾克斯稱(chēng),這個(gè)系統(tǒng)的效率非常高,它可能幫谷歌省下了足以再多建一個(gè)數(shù)據(jù)中心的成本。沒(méi)錯(cuò),一個(gè)完整的數(shù)據(jù)中心。那也許看起來(lái)就象是天外來(lái)客一樣,從某種角度來(lái)說(shuō),它確實(shí)是天外來(lái)客。但是,谷歌為了運(yùn)行其龐大的網(wǎng)絡(luò)帝國(guó)而開(kāi)發(fā)的新時(shí)代硬件和軟件通常會(huì)慢慢地滲透到互聯(lián)網(wǎng)的各個(gè)角落。伯格系統(tǒng)也不例外。
在Twitter,有一個(gè)小規(guī)模的工程師團(tuán)隊(duì)利用加州伯克萊大學(xué)的研究員們開(kāi)發(fā)出來(lái)的一個(gè)名為“Mesos”的軟件平臺(tái)開(kāi)發(fā)出了一款類(lèi)似的系統(tǒng)。由于“Mesos”平臺(tái)是一款開(kāi)源軟件,因此任何人都可以免費(fèi)使用它,這個(gè)平臺(tái)也逐漸在向其他領(lǐng)域擴(kuò)展。
伯格這個(gè)名稱(chēng)非常貼切。谷歌的這個(gè)系統(tǒng)就是一個(gè)中央大腦,可以控制谷歌所有數(shù)據(jù)中心上的全部任務(wù)。谷歌不用為每一個(gè)軟件系統(tǒng)如谷歌搜索、Gmail、谷歌地圖等各搭建一組獨(dú)立的服務(wù)器,它只需搭建一組服務(wù)器來(lái)同時(shí)執(zhí)行各種不同的任務(wù)就行了。所有的任務(wù)都會(huì)被分割成細(xì)小的任務(wù),然后由伯格系統(tǒng)將那些任務(wù)發(fā)送到它能找到空閑計(jì)算資源的地方。
威爾克斯說(shuō),這就好像是一大堆積木一樣,每塊積木的外形和大小都是不同的。伯格系統(tǒng)的任務(wù)就是找到一種將所有的積木都裝入木桶中的方法。這里所說(shuō)的積木就好比是計(jì)算機(jī)任務(wù),木桶就好比是服務(wù)器,關(guān)鍵是不能浪費(fèi)木桶中的任何空間。
威爾克斯說(shuō):“如果你只是簡(jiǎn)單地將積木丟到木桶里,那么你要么會(huì)剩下很多積木裝不進(jìn)去,要么會(huì)造成有的木桶裝得滿,有的木桶裝不滿的情況,因?yàn)榉e木與積木之間貼合得并不緊密,那樣就會(huì)浪費(fèi)掉不少的空間。但是如果你細(xì)心去安排如何裝積木的話,你就可以減少木桶的需用量。”
還有其他的方法可以做到這一點(diǎn)。你可以利用服務(wù)器虛擬化技術(shù)來(lái)達(dá)到相同的目的。但是虛擬化會(huì)額外增加不必要的復(fù)雜性,如果去掉這個(gè)因素,谷歌就可以將數(shù)據(jù)中心基礎(chǔ)設(shè)施的規(guī)模減小幾個(gè)百分點(diǎn)??紤]到谷歌數(shù)據(jù)中心網(wǎng)絡(luò)的規(guī)模,那幾個(gè)百分點(diǎn)對(duì)應(yīng)的可能就是一個(gè)完整的數(shù)據(jù)中心。
威爾克斯說(shuō):“那就相當(dāng)于另外再建一個(gè)數(shù)據(jù)中心,這里增加一點(diǎn),那里增加一點(diǎn),最后匯總起來(lái),那就是一大筆開(kāi)支。”
在Twitter,Mesos并不具備與伯格系統(tǒng)一樣規(guī)模的影響力。Twitter的業(yè)務(wù)規(guī)模比谷歌的業(yè)務(wù)規(guī)模要小得多,但是Twitter的業(yè)務(wù)總是在不斷的發(fā)展壯大,Mesos可以更好地控制業(yè)務(wù)規(guī)模的增長(zhǎng)速度。伯格和Mesos并不只是從服務(wù)器群中提取計(jì)算能力。它們可以讓谷歌和Twitter那樣的公司將數(shù)據(jù)中心當(dāng)做一臺(tái)設(shè)備來(lái)對(duì)待。
谷歌和Twitter可以象你在你的臺(tái)式機(jī)電腦上運(yùn)行軟件那樣在這些計(jì)算設(shè)備上運(yùn)行軟件。這樣就可以簡(jiǎn)化Gmail、谷歌地圖和Twitter應(yīng)用的開(kāi)發(fā)人員的工作。
曾經(jīng)在加州伯克萊大學(xué)創(chuàng)立Mesos項(xiàng)目、目前在Twitter擔(dān)任Mesos項(xiàng)目總監(jiān)的本海因德曼(Ben Hindman)稱(chēng):“Mesos可以簡(jiǎn)化Twitter工程師的工作,他們只需考慮在一個(gè)數(shù)據(jù)中心的平臺(tái)上運(yùn)行他們開(kāi)發(fā)的應(yīng)用軟件就行了。那真的是很棒。”
它是一個(gè)數(shù)據(jù)中心,但它看起來(lái)就象是一塊芯片
伯格和Mesos都是規(guī)模龐大的項(xiàng)目。但是為了更好地理解它們,最好還是先從英特爾提供給海因德曼的測(cè)試用計(jì)算機(jī)芯片來(lái)說(shuō)起。
大約在5年前,當(dāng)時(shí)海因德曼還在加州巴克萊大學(xué)攻讀計(jì)算機(jī)科學(xué)博士學(xué)位,計(jì)算機(jī)芯片還處于多核時(shí)代。處理器是計(jì)算機(jī)的中央大腦,以前的處理器一次只能執(zhí)行一條指令。但是多核處理器出現(xiàn)后,處理器一次就可以處理多條指令。從本質(zhì)上來(lái)說(shuō),它是一個(gè)包括了許多個(gè)處理器或核心的芯片。
在加州伯克萊大學(xué),海因德曼的研究目標(biāo)是將計(jì)算任務(wù)盡可能有效地分布到那些芯片中。英特爾為他提供試驗(yàn)用的芯片,他將那些芯片連接在一起,制作出擁有64個(gè)核心或128個(gè)核心的計(jì)算機(jī)樣品。然后他開(kāi)發(fā)了一套系統(tǒng)來(lái)運(yùn)行多種應(yīng)用軟件,并且將計(jì)算負(fù)載平均地權(quán)分配給所有的處理器核心,不管哪里出現(xiàn)閑置的計(jì)算能力,都可以馬上發(fā)送一條指令過(guò)去。
海因德曼說(shuō):“我們發(fā)現(xiàn),應(yīng)用程序在將它們的計(jì)算任務(wù)分配給這些計(jì)算資源時(shí)做得非常巧妙,但是它們?nèi)匀幌胍@得盡可能多的計(jì)算資源。他們忽略掉其他可能正在運(yùn)行的應(yīng)用程序,將所有的計(jì)算資源都抓在手里。因此我們開(kāi)發(fā)了一套系統(tǒng),只讓一個(gè)應(yīng)用程序使用一定數(shù)量的處理器核心,然后將其他的核心分配給其他的應(yīng)用程序。而且,這種計(jì)算資源分配模式是可以隨著時(shí)間的推移而發(fā)生變化的。”
海因德曼一直是在一臺(tái)計(jì)算機(jī)上做研究。但是當(dāng)他的研究完成后,他就可以將那個(gè)本質(zhì)性的系統(tǒng)應(yīng)用到整個(gè)數(shù)據(jù)中心里。他說(shuō):“在一塊芯片上安裝64個(gè)核心或128個(gè)核心看起來(lái)就好像是一個(gè)數(shù)據(jù)中心里的64臺(tái)計(jì)算機(jī)或128臺(tái)計(jì)算機(jī)。”他就是那么做的,但是并非有意為之,只是巧合罷了。
海因德曼一直在研究多核心處理器,而他的朋友和同事安迪孔維因斯基(Andy Konwinski)和馬泰扎哈里亞(Matei Zaharia)一直在研究能夠跨多個(gè)龐大的數(shù)據(jù)中心運(yùn)行的軟件平臺(tái)。這些被稱(chēng)作“分布式系統(tǒng)”,它們構(gòu)成了目前的大多數(shù)大型網(wǎng)絡(luò)服務(wù)的支柱。它們包括很多組件,比如利用海量服務(wù)器來(lái)處理數(shù)據(jù)的Hadoop、在很多臺(tái)設(shè)備上儲(chǔ)存信息的各種NoSQL數(shù)據(jù)庫(kù)等。
之后,海因德曼和他的朋友們決定共同開(kāi)發(fā)一個(gè)項(xiàng)目,當(dāng)然原因可能并不僅僅是他們彼此都很欣賞對(duì)方。但是他們很快意識(shí)到,他們研究的領(lǐng)域是完全不同的,而且竟然是互補(bǔ)的。
以前,象Hadoop那樣的分布式系統(tǒng)是運(yùn)行在一個(gè)龐大的服務(wù)器群組上的。然后,如果想運(yùn)行另一個(gè)分布式系統(tǒng),就必須再搭建一個(gè)新的服務(wù)器群組。但是海因德曼和他的朋友們很快發(fā)現(xiàn),如果他們可以借鑒海因德曼研究的芯片項(xiàng)目的經(jīng)驗(yàn),他們就可以更高效地運(yùn)行分布式系統(tǒng)。就象海因德曼去研究如何在一個(gè)多核心處理器上運(yùn)行多種應(yīng)用程序一樣,他們可以建立一個(gè)平臺(tái)來(lái),讓很多個(gè)分布式系統(tǒng)在一個(gè)服務(wù)器群組上運(yùn)行。
結(jié)果就有了Mesos系統(tǒng)。
“我們懷念伯格”
2010年3月,Mesos項(xiàng)目啟動(dòng)后大約過(guò)了一年的時(shí)候,海因德曼和他的朋友們?nèi)witter講座。起先,他感到非常失望。因?yàn)橹挥?個(gè)人來(lái)聽(tīng)他的講座。但是Twitter的首席科學(xué)家對(duì)他說(shuō),8個(gè)人已經(jīng)很多了,占到公司員工總數(shù)的10%左右。當(dāng)他演講完之后,還有3個(gè)人與他進(jìn)行了交談。
那3個(gè)人是Twitter的工程師約翰西羅伊斯(John Sirois)、特拉維斯克勞福德(Travis Crawford)和比爾法爾納(Bill Farner),他們以前都曾在谷歌工作過(guò)。他們對(duì)海因德曼說(shuō),他們很懷念伯格系統(tǒng),而且Mesos似乎可以通過(guò)一種完美的方式來(lái)重建它。
不久之后,海因德曼擔(dān)任了Twitter的顧問(wèn),與上面提到的3名工程師密切地共事,以拓展Mesos項(xiàng)目。之后他作為臨時(shí)員工加入了Twitter。一年后,海因德曼成為T(mén)witter的一名正式員工。海因德曼回憶說(shuō):“我的老板當(dāng)時(shí)說(shuō),如果你在一年前就加入公司的話,你可能已經(jīng)獲得了一年價(jià)值的Twitter股票,你當(dāng)時(shí)在想什么呢?”之后,他和他的同事們繼續(xù)將Mesos作為一個(gè)開(kāi)源軟件項(xiàng)目來(lái)開(kāi)發(fā),但他同時(shí)還在努力將Mesos平臺(tái)搬到Twitter的數(shù)據(jù)中心里去使用,情況跟谷歌的伯格系統(tǒng)非常相似。
(圖注:由于使用了伯格和后續(xù)的歐米茄系統(tǒng),谷歌不用在不同的服務(wù)器群組上運(yùn)行各自的軟件系統(tǒng),而是將所有的東西放在一個(gè)服務(wù)器群組上運(yùn)行。)
谷歌并未正式參與那個(gè)項(xiàng)目。但是它為巴克萊AMP試驗(yàn)室提供了資金,而AMP試驗(yàn)室正是Mesos項(xiàng)目的主要研究機(jī)構(gòu)。而且,那些參與了Mesos項(xiàng)目的研究人員也經(jīng)常與威爾克斯那樣的谷歌員工交換想法。威爾克斯稱(chēng):“我們發(fā)現(xiàn)他們正在開(kāi)發(fā)它,我開(kāi)始安排自己的日程表,以便每6個(gè)月就可以跟他們碰一次頭,有時(shí)只是為了在一起聊聊。”
孔維因斯基也在谷歌臨時(shí)工作了一段時(shí)間,并且還在威爾克斯手下干了一段時(shí)間??拙S因斯基說(shuō):“我們從未針對(duì)谷歌內(nèi)部運(yùn)行的某些特定的系統(tǒng)交換過(guò)想法,因?yàn)楣雀柙谀切╉?xiàng)目的保密性上面管得非常嚴(yán)。但是我們還是得到了很多有用的反饋信息,都是在很高層面上的,比如具體的問(wèn)題是什么,我們應(yīng)該關(guān)注哪些問(wèn)題等等。”
Mesos項(xiàng)目與伯格系統(tǒng)有一點(diǎn)不同,后者的歷史要比前者長(zhǎng)一些。但是它們本質(zhì)性的問(wèn)題是一樣的。據(jù)海因德曼稱(chēng),谷歌的新版伯格系統(tǒng)即歐米茄與Mesos的模式更為接近。
這些系統(tǒng)被稱(chēng)作“服務(wù)器群組管理系統(tǒng)”,它們與多年以前就在開(kāi)發(fā)的很多被用來(lái)運(yùn)行超級(jí)電腦和Sun Grid Engine等服務(wù)的工具很相似。歐米茄和Mesos都可以讓你在同一個(gè)服務(wù)器群組上運(yùn)行多套分布式系統(tǒng)。你不需要專(zhuān)門(mén)為Hadoop分配一個(gè)服務(wù)器群組,然后為Storm(一種可以實(shí)時(shí)處理多條數(shù)據(jù)流的工具)分配另一個(gè)服務(wù)器群組,你可以將它們放在同一個(gè)服務(wù)器群組上運(yùn)行。威爾克斯稱(chēng):“這就是我們開(kāi)發(fā)的方向,它可以提高效率,這也就是我們開(kāi)發(fā)這些系統(tǒng)的原因。”
那些工具還提供了一個(gè)接口,軟件設(shè)計(jì)師們可以利用那個(gè)接口在伯格或Mesos平臺(tái)上運(yùn)行他們自己的應(yīng)用程序。在Twitter,這個(gè)接口被稱(chēng)作“Aurora”。例如,一組工程師可以利用Aurora來(lái)運(yùn)行Twitter的廣告系統(tǒng)。海因德曼當(dāng)時(shí)說(shuō),公司大約20%的服務(wù)都是以這種方式運(yùn)行在Mesos平臺(tái)上的。
威爾克斯稱(chēng),現(xiàn)在谷歌提供了很多工具,幫助工程師們將各項(xiàng)資源分配給他們的應(yīng)用程序。但是歐米茄的目的是處理更多這樣的任務(wù),因此工程師們不必?fù)?dān)心細(xì)節(jié)問(wèn)題。他說(shuō):“你可以將它看作是自動(dòng)擋汽車(chē)與手動(dòng)擋汽車(chē)的對(duì)比,你想要跑得更快,你沒(méi)必要去調(diào)整壓縮比或進(jìn)口歧管。”
歐米茄項(xiàng)目仍處于開(kāi)發(fā)狀態(tài),但是公司已經(jīng)開(kāi)始在實(shí)際數(shù)據(jù)中心中進(jìn)行樣品測(cè)試了。
Twitter的本海因德曼
克隆的攻擊
據(jù)威爾克斯稱(chēng),谷歌打算發(fā)布一份關(guān)于伯格系統(tǒng)的研究報(bào)告。谷歌通常不愿意透露其支撐著它的網(wǎng)絡(luò)帝國(guó)的各種系統(tǒng)的資料。從競(jìng)爭(zhēng)的角度來(lái)說(shuō),那些技術(shù)具有非常重要的意義;但是一旦這些工具達(dá)到一定的成熟階段,谷歌就會(huì)向外公布。
在發(fā)布那樣一份研究報(bào)告和Mesos在Twitter的興起期間,伯格模式將在網(wǎng)絡(luò)上得到進(jìn)一步擴(kuò)散。其他一些公司如AirBNB、Conviva和另外一家與加州伯克萊大學(xué)關(guān)系密切的公司已經(jīng)開(kāi)始使用Mesos系統(tǒng),威爾克斯相信,Mesos項(xiàng)目背后的基本構(gòu)想可能會(huì)極大地改變企業(yè)運(yùn)行分布式系統(tǒng)的方式。
是的,還有很多其他方式可以高效地將工作負(fù)載分配到服務(wù)器群組中去。你可以使用虛擬化解決方案,在物理服務(wù)器上運(yùn)行虛擬服務(wù)器,然后把你想要加載的任何軟件加載到虛擬服務(wù)器上去。但是在伯格和Mesos平臺(tái)上,你不用擔(dān)心去擔(dān)心那些虛擬機(jī)。
海因德曼稱(chēng):“接口是最重要的東西。虛擬化解決方案給你的接口是一個(gè)新的虛擬機(jī),我們不想那樣,我們要想一種更簡(jiǎn)單的解決方案。我們希望人們可以管理數(shù)據(jù)中心,就象他們管理筆記本電腦一樣。”
威爾克斯稱(chēng):“如果你是一名工程師并建立起一個(gè)虛擬機(jī),你會(huì)得到一個(gè)看起來(lái)象是另一臺(tái)硬件的東西。你必須在它上面運(yùn)行一款操作系統(tǒng),你必須去管理它,你必須升級(jí)它,你必須去做需要對(duì)一臺(tái)物理設(shè)備做的所有工作。”
他接著說(shuō):“但那并不是一名工程師利用他的時(shí)間的最好方式。他們真正想要做的是運(yùn)行他們的應(yīng)用程序。我們?yōu)樗麄兲峁┝艘环N實(shí)現(xiàn)那個(gè)目標(biāo)的方法,而且不需要去使用虛擬機(jī)。”
顯然,很多工程師寧愿使用原始的虛擬機(jī)。這就是他們從亞馬遜EC2服務(wù)中獲得到的東西。亞馬遜的云計(jì)算服務(wù)已經(jīng)成為運(yùn)行軟件應(yīng)用程序最流行的方式,以致于無(wú)數(shù)公司都在努力為開(kāi)發(fā)人員和企業(yè)用戶(hù)提供相似的工具。
畢業(yè)于加州巴克萊大學(xué)、同樣在威爾克斯手下干過(guò)一段時(shí)間臨時(shí)工的查理雷斯(Charles Reiss)并不認(rèn)為現(xiàn)在的這個(gè)系統(tǒng)能夠提供比其他可比解決方案更大的優(yōu)勢(shì)。但是他同時(shí)也補(bǔ)充說(shuō),歐米茄就不同了。
谷歌打算通過(guò)歐米茄項(xiàng)目讓整個(gè)流程變得更加順暢,就象Twitter利用Mesos平臺(tái)和Aurora實(shí)現(xiàn)的目標(biāo)一樣。從長(zhǎng)期角度來(lái)說(shuō),其他公司肯定會(huì)模仿它們。谷歌和Twitter將數(shù)據(jù)中心當(dāng)做一個(gè)超大型的計(jì)算機(jī)來(lái)看待,最終全世界也會(huì)這樣做。計(jì)算機(jī)科學(xué)總是利用這樣的方式向前發(fā)展。我們從一種復(fù)雜的接口起步,慢慢地開(kāi)發(fā)出一種不再?gòu)?fù)雜的接口。這樣的事情在臺(tái)式機(jī)電腦、筆記本電腦和服務(wù)器領(lǐng)域都已經(jīng)發(fā)生過(guò)了?,F(xiàn)在,輪到數(shù)據(jù)中心了。