北京時間11月28日消息,《連線》雜志網絡版近日刊載文章,對全球最大的單一數據庫谷歌Spanner進行了詳細的描述,稱其昭示著整個世界的未來發展方向。文章指出,在Spanner數據庫中,谷歌摒棄了傳統的“網絡時間協議”,轉而使用自己的時間協調機制,這個機制被稱為“TrueTime API”。谷歌在Spanner數據中心里配備了自己的原子鐘和GPS接收器,這些時間協調裝置會連接到特定數量的主服務器,然后再由主服務器向整個谷歌網絡中運行的其他電腦傳輸時間讀數。
以下是這篇文章的全文:
每天早上,當安德魯·菲克斯(Andrew Fikes)坐在美國加州山景城谷歌總部的辦公桌前時,他就會打開谷歌與紐約之間的“VC”連接。
“VC”是谷歌對視頻會議(video conference)的縮寫。通過辦公桌上的電腦屏幕,菲克斯能看到威爾遜·謝(Wilson Hsieh)坐在谷歌曼哈頓辦公室里,后者也能看到菲克斯。兩人還會與谷歌在華盛頓州柯克蘭(Kirkland,靠近西雅圖)的一個辦公室建立VC連接。他們的工程團隊跨越這個國家三個不同地區的三個辦公室,但所有人仍舊可以毫無延遲地聊天、進行“頭腦風暴”和互相解答疑難問題,而這就是谷歌建立Spanner數據庫的方式。
“如果你走進我們的辦公室就會發現,我們一直都會保持VC處于開啟狀態。”菲克斯說道,他在2001年加盟谷歌,現在已經躋身于谷歌杰出的軟件工程師之列。“我們在過去多年時間里一直都在這樣做,這就降低了一般通信方式的所有壁壘。”
這種布置是合適的。正如創造Spanner數據庫的工程團隊一樣,Spanner覆蓋全球,但其運作卻像是完全在同一個地方發生的。在經歷了多年的暗示和傳言以后,Spanner終于在今年秋天出現在公眾視線里,它是第一個有資格“有名有姓”的全球數據庫——其目的是在數以百計的數據中心、成百萬的電腦和數萬億計行信息之間無縫運作。
Spanner是一個如此龐大的創造產物,以至于有些人很難真正去了解它。但是,它所帶來的最終結果是很容易說明的:通過Spanner,谷歌能向全球受眾提供網絡服務,但仍可確保正在世界某個地區中發生在這項服務中的事情不會與發生在另一個地區的事情相抵觸。
這個新時代的谷歌數據庫已經成為該公司在線廣告系統的一部分——這個系統能給谷歌帶來龐大的收入——可能預示著網絡的其他部分將走向何處。當谷歌在9月中旬發布研究報告來對Spanner作出詳細描述時,整個世界都為之震動;幾個星期以后,當威爾遜·謝在加州好萊塢的一次會議上演示這份研究報告的內容時,在中堅電腦系統工程師中引發的熱議也是明顯可見的。
“這當然是很有趣的一件事情。”為Facebook網站提供支持的大型軟件平臺的主要工程師之一羅谷·默蒂(Raghu Murty)說道——但他補充稱,Facebook尚未探索實際構建類似數據庫的可能性。
谷歌的網絡業務比大多數公司的同類業務都要復雜得多,而且這家公司還被迫構建遠遠超出大多數網絡公司范疇的定制化軟件。但隨著互聯網的增長,谷歌創造的產品經常都會對世界其他部分造成“涓滴效應”。
在谷歌公布Spanner數據庫的細節以前,許多人甚至都不認為這是可能做到的事情。沒錯,我們已經擁有了能在多個數據中心之間存儲信息的“NoSQL”數據庫,但這些數據庫不能在保持信息“一致”——意味著在世界一端的數據中心里瀏覽數據的人所看到的東西與另一端的人看到的東西完全相同——的情況下做到跨數據中心存儲。人們原本對此作出的假設是,之所以不能做到這種“一致”性,是因為在數據中心之間傳遞信息存在固有的延遲。
但在構建一個既具有全球性又能保持一致性的數據中心的過程中,谷歌Spanner工程師做了一些令人完全意想不到的事情,而這也恰恰符合他們經常都會出人意料的過往歷史。這個團隊的成員不僅包括菲克斯和威爾遜·謝,同時還包括傳奇性的谷歌人物杰夫·迪恩(Jeff Dean)和桑杰伊·格馬瓦特(Sanjay Ghemawa)以及其他很多工程師,這些工程師都曾致力于開發開創性的數據中心平臺,如Megastore和Dremel等。
而這一次,他們找到了一種讓時間保持一致的新方法。
“作為一名分布式系統開發者,你會受到這樣的教育——我想說的是,從孩提時代就開始受到這種教育——那就是不要相信時間。”菲克斯說道。“我們所做的事情就是找到一種方法來讓我們能相信時間——以及理解相信時間意味著什么。”
時間是極其重要的
在網絡上,時間是極其重要的。沒錯,當運行一項大型網絡服務時,你需要事情迅速地發生。但你還需要一種精確追蹤許多電腦的時間的方法,這些電腦為你的服務提供支持。你必須同步在每臺服務器上運行的許多進程,而且還必須對服務器本身進行同比,這樣一來它們才能協同運作。而想要做到這一點可謂“知易行難”。
通常情況下,數據中心運營商會使用所謂的“網絡時間協議”(Network Time Protocol,NTP)來保持服務器的的同步,這從本質上來說是一種將電腦與官方原子鐘聯系到一起的在線服務,從而讓全世界各地組織的時間保持一致。但是,由于在一個網絡中傳輸信息需要時間的緣故,這種方法從來都無法做到完全精確,而且有些時候還會完全失效。在今年7月份,幾家主要的網絡公司——包括Reddit、Gawker和Mozilla等——就遭遇了問題,原因是其軟件沒有做好應對“閏秒”(為保持協調世界時接近于世界時時刻,由國際計量局統一規定在年底或年中對協調世界時增加或減少1秒的調整)的準備。
但在Spanner數據庫中,谷歌摒棄了“網絡時間協議”,轉而使用自己的時間協調機制,這個機制被稱為“TrueTime API”。“我們想要一種能讓自己信得過的東西。”菲克斯說道。“那就是谷歌自己擁有的時間基準。”
谷歌沒有依靠外部時鐘,而是在其Spanner數據中心里配備了自己的原子鐘和GPS(全球定位系統)接收器,這與你iPhone中的應用是不一樣的。通過環繞地球進行軌道運行的衛星所構成的網絡,GPS接收器不僅可以精確找到你所在的位置,而且還能精確報時。
這些時間協調裝置會連接到特定數量的主服務器,然后再由主服務器向整個谷歌網絡中運行的其他電腦傳輸時間讀數�;旧蟻碚f,谷歌網絡中的每臺電腦都會運行一個后臺程序,這個程序會不斷地與同一個數據中心及其他谷歌數據中心的主服務器進行聯系,試圖達成協調一致的時間。通過這種方式,整個谷歌網絡中的電腦都會相當接近于運行一個通用時鐘。
系統做出回應,而非人類
這種方法是如何引導一個全球數據庫的呢?這要感謝TrueTime服務,這種服務讓谷歌得以將許多電腦保持同步——即使這些電腦是分布在多個數據中心里的——這意味著它們能迅速存儲和檢索數據,而不會互相踩到對方的“腳趾”。
“我們能在兩個不同的地方交付數據——比如說美國西海岸和歐洲——而這兩個地方之間仍舊存在某種商定的定序。”菲克斯說道。“因此,如果美國西海岸地區首先交付數據,然后歐洲地區再交付,那么整個系統都會知道這個順序——然后就不會出現數據以截然不同的順序被查看的可能。”
根據安迪·格羅斯(Andy Gross)——他是數據存儲和管理軟件創業企業Basho的主架構師,該公司開發了一個名為Riak的開源數據庫,目的是在數千個服務器之間運行——的說法,數據庫設計人員通常都會尋求讓計算機彼此之間進行“對話”,從而實現信息的同步化。“你必須進行一大堆的通信,來判定所有信息處理的正確順序。”他在今天秋天接受《連線》雜志采訪時說道,當時谷歌剛剛對外發布了Spanner的細節。
問題在于,這種通信能讓整個網絡都陷入停頓狀態——數據庫也是如此。正如麥克斯希雷森(Max Schireson)——他是大數據公司10gen的總裁,這家公司開發了NoSQL數據庫MongoDB——對我們所說的那樣:“如果有大量用戶同時接入大量分布在全球的系統,那么這些系統之間的通信延遲時間會是相當長的,讓所有事情都同步起來就會變得非常困難。如果這些要素的數值提高,那么就會變得更加困難。”
因此,谷歌就采取了一種完全不同的道路。谷歌沒有竭力試圖改善服務器之間的通信方式,而是給它們帶來了一種新的報時方法。“這可能是(谷歌研究)報告的最酷的一件事情:使用原子鐘和GPS來提供一個時間API(應用程序接口)。”Facebook的默蒂說道。
在控制時間的問題上,谷歌不僅能構建一個同時具有全球性和時間一致性的數據庫,同時還能讓其服務在網絡延遲、數據中心宕機及其他軟件和硬件故障的面前變得更加具有抵抗力。從基本上來說,谷歌是利用Spanner來精確復制多個數據中心之間的數據,然后迅速地在各個數據副本之間“穿梭”。換而言之,這些數據副本也同樣具有一致性。
當一個數據副本不可用時,Spanner能迅速轉向另一個副本。但是,Spanner也會在不同副本中“穿梭”,目的只是為了改善其表現。“如果你擁有一個數據副本,而這個副本變得忙碌,那么網絡延遲就會變得很高;但如果你還擁有其他四個副本,那么就能選擇轉到另一個副本,從而減少延遲。”菲克斯說道。
菲克斯表示,這樣做的結果之一是,谷歌花在管理自身系統上的費用有所減少。“從某種程度上來說,當一個服務器宕機時,我們只需要轉到系統中其他服務器的客戶端電腦即可。”他說道。“這是一種簡單得多的服務……做出回應的是系統本身,而不是人類。”
追隨谷歌的步伐
有些人會懷疑,其他公司是否也會追隨谷歌的步伐——以及它們是否想要這樣做。當我們與格羅斯交談時,他猜測甚至就連谷歌原子鐘和GPS接收器也將由于成本過高而不適用于大多數公司。
沒錯,重新構建平臺將是一項龐大的任務。谷歌在這個項目上已經花費了四年半時間,菲克斯——他幫助構建了谷歌的網絡歷史工具、第一項產品搜索服務以及Google Answers和BigTable——將Spanner稱為他曾從事開發過的最困難的東西。另外,還有數不清的后勤相關事務需要處理。
正如菲克斯所指出的那樣,谷歌不得不在其數據中心的屋頂上安裝GPS天線,并將這些天線與數據中心內部的硬件連接起來。而且,你還需要兩種不同類型的時間協調器。硬件經常都會出故障,而時間協調器也同樣會在不同的時候發生故障。“原子鐘會在GPS出問題時提供穩定性。”他說道。
但據菲克斯稱,這些設備相對來說都不算貴。GPS接收器當然不會像iPhone里的裝置那樣便宜,但跟谷歌的原子鐘一樣,這種設備的單價不會超過幾千美元。“這些設備從某種程度上來說符合企業級服務器的成本序列。”他說道。“而且有許多供應商都會提供這些設備。”當我們與迪恩——他是谷歌主要的架構工程師之一,同時也是Spanner報告的另一名作者——討論此事時,他也作出了幾乎相同的回答。
菲克斯還指出,TrueTime服務并不需要配備專門的服務器。時間協調器就放置在服務器機架上,而且只需要與數據中心里的某些服務器連接起來即可。
“你可以認為,每個數據中心里僅有少量的此類設備。它們的外形就像盒子一樣,你可以購買這些設備,然后將其插入服務器機架,通過以太網將其與服務器連在一起。”菲克斯說道。“需要考慮的一件重要的事情是,這是一種向數據中心提供的服務,其成本會平攤在所有的服務器中。每臺服務器的成本都是某個增量的數字——你需要權衡的就是這種成本與我們能利用其所做到的事情。”
Spanner并非當今所有網站都需要的東西,但整個世界都正朝著它的方向發展。雖然Facebook尚未探索開發類似于Spanner的數據庫,但該公司正在構建一個名為Prism的平臺,這個平臺將負責運行該公司在多個數據中心龐大的數據運算任務。
沒錯,谷歌的廣告系統是很龐大,但這個系統得益于Spanner數據庫,而且在某種程度上來說也會讓許多其他網絡服務從中受益。谷歌廣告系統是一個在線拍賣平臺——廣告主需要進行競價來顯示自己的廣告,用戶則將在搜索某一特定物品或訪問特定網站時看到這些廣告——每一則廣告的出現都有賴于描述大量廣告主和網民行為的數據。通過Spanner,谷歌可以在全球范圍內處理這種數據,同時仍可保持整個系統的同步性。
正如菲克斯所說,Spanner只是谷歌利用其控制時間的新方法的第一個范例。“我預計,未來還將出現許多其他服務。”他說道。菲克斯的意思是指其他的谷歌服務,但既然這家公司現在已經將其Spanner報告與整個世界都進行了共享,那么它這樣做必然是有理由的。
推薦閱讀
快件自提是滿足消費者對于電商配送個性化需求的形式之一,其市場潛力較大,“無論自建物流體系還是社會化物流,采用自提點模式解決最后一公里難題,需要的是以時間進行布局和轉變消費者的觀念”。 民營快遞在中航協的>>>詳細閱讀
地址:http://www.xglongwei.com/a/guandian/yejie/20121229/109411.html