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