北京時(shí)間11月28日消息,《連線》雜志網(wǎng)絡(luò)版近日刊載文章,對(duì)全球最大的單一數(shù)據(jù)庫(kù)谷歌Spanner進(jìn)行了詳細(xì)的描述,稱其昭示著整個(gè)世界的未來(lái)發(fā)展方向。文章指出,在Spanner數(shù)據(jù)庫(kù)中,谷歌摒棄了傳統(tǒng)的“網(wǎng)絡(luò)時(shí)間協(xié)議”,轉(zhuǎn)而使用自己的時(shí)間協(xié)調(diào)機(jī)制,這個(gè)機(jī)制被稱為“TrueTime API”。谷歌在Spanner數(shù)據(jù)中心里配備了自己的原子鐘和GPS接收器,這些時(shí)間協(xié)調(diào)裝置會(huì)連接到特定數(shù)量的主服務(wù)器,然后再由主服務(wù)器向整個(gè)谷歌網(wǎng)絡(luò)中運(yùn)行的其他電腦傳輸時(shí)間讀數(shù)。
以下是這篇文章的全文:
每天早上,當(dāng)安德魯·菲克斯(Andrew Fikes)坐在美國(guó)加州山景城谷歌總部的辦公桌前時(shí),他就會(huì)打開(kāi)谷歌與紐約之間的“VC”連接。
“VC”是谷歌對(duì)視頻會(huì)議(video conference)的縮寫(xiě)。通過(guò)辦公桌上的電腦屏幕,菲克斯能看到威爾遜·謝(Wilson Hsieh)坐在谷歌曼哈頓辦公室里,后者也能看到菲克斯。兩人還會(huì)與谷歌在華盛頓州柯克蘭(Kirkland,靠近西雅圖)的一個(gè)辦公室建立VC連接。他們的工程團(tuán)隊(duì)跨越這個(gè)國(guó)家三個(gè)不同地區(qū)的三個(gè)辦公室,但所有人仍舊可以毫無(wú)延遲地聊天、進(jìn)行“頭腦風(fēng)暴”和互相解答疑難問(wèn)題,而這就是谷歌建立Spanner數(shù)據(jù)庫(kù)的方式。
“如果你走進(jìn)我們的辦公室就會(huì)發(fā)現(xiàn),我們一直都會(huì)保持VC處于開(kāi)啟狀態(tài)。”菲克斯說(shuō)道,他在2001年加盟谷歌,現(xiàn)在已經(jīng)躋身于谷歌杰出的軟件工程師之列。“我們?cè)谶^(guò)去多年時(shí)間里一直都在這樣做,這就降低了一般通信方式的所有壁壘。”
這種布置是合適的。正如創(chuàng)造Spanner數(shù)據(jù)庫(kù)的工程團(tuán)隊(duì)一樣,Spanner覆蓋全球,但其運(yùn)作卻像是完全在同一個(gè)地方發(fā)生的。在經(jīng)歷了多年的暗示和傳言以后,Spanner終于在今年秋天出現(xiàn)在公眾視線里,它是第一個(gè)有資格“有名有姓”的全球數(shù)據(jù)庫(kù)——其目的是在數(shù)以百計(jì)的數(shù)據(jù)中心、成百萬(wàn)的電腦和數(shù)萬(wàn)億計(jì)行信息之間無(wú)縫運(yùn)作。
Spanner是一個(gè)如此龐大的創(chuàng)造產(chǎn)物,以至于有些人很難真正去了解它。但是,它所帶來(lái)的最終結(jié)果是很容易說(shuō)明的:通過(guò)Spanner,谷歌能向全球受眾提供網(wǎng)絡(luò)服務(wù),但仍可確保正在世界某個(gè)地區(qū)中發(fā)生在這項(xiàng)服務(wù)中的事情不會(huì)與發(fā)生在另一個(gè)地區(qū)的事情相抵觸。
這個(gè)新時(shí)代的谷歌數(shù)據(jù)庫(kù)已經(jīng)成為該公司在線廣告系統(tǒng)的一部分——這個(gè)系統(tǒng)能給谷歌帶來(lái)龐大的收入——可能預(yù)示著網(wǎng)絡(luò)的其他部分將走向何處。當(dāng)谷歌在9月中旬發(fā)布研究報(bào)告來(lái)對(duì)Spanner作出詳細(xì)描述時(shí),整個(gè)世界都為之震動(dòng);幾個(gè)星期以后,當(dāng)威爾遜·謝在加州好萊塢的一次會(huì)議上演示這份研究報(bào)告的內(nèi)容時(shí),在中堅(jiān)電腦系統(tǒng)工程師中引發(fā)的熱議也是明顯可見(jiàn)的。
“這當(dāng)然是很有趣的一件事情。”為Facebook網(wǎng)站提供支持的大型軟件平臺(tái)的主要工程師之一羅谷·默蒂(Raghu Murty)說(shuō)道——但他補(bǔ)充稱,F(xiàn)acebook尚未探索實(shí)際構(gòu)建類似數(shù)據(jù)庫(kù)的可能性。
谷歌的網(wǎng)絡(luò)業(yè)務(wù)比大多數(shù)公司的同類業(yè)務(wù)都要復(fù)雜得多,而且這家公司還被迫構(gòu)建遠(yuǎn)遠(yuǎn)超出大多數(shù)網(wǎng)絡(luò)公司范疇的定制化軟件。但隨著互聯(lián)網(wǎng)的增長(zhǎng),谷歌創(chuàng)造的產(chǎn)品經(jīng)常都會(huì)對(duì)世界其他部分造成“涓滴效應(yīng)”。
在谷歌公布Spanner數(shù)據(jù)庫(kù)的細(xì)節(jié)以前,許多人甚至都不認(rèn)為這是可能做到的事情。沒(méi)錯(cuò),我們已經(jīng)擁有了能在多個(gè)數(shù)據(jù)中心之間存儲(chǔ)信息的“NoSQL”數(shù)據(jù)庫(kù),但這些數(shù)據(jù)庫(kù)不能在保持信息“一致”——意味著在世界一端的數(shù)據(jù)中心里瀏覽數(shù)據(jù)的人所看到的東西與另一端的人看到的東西完全相同——的情況下做到跨數(shù)據(jù)中心存儲(chǔ)。人們?cè)緦?duì)此作出的假設(shè)是,之所以不能做到這種“一致”性,是因?yàn)樵跀?shù)據(jù)中心之間傳遞信息存在固有的延遲。
但在構(gòu)建一個(gè)既具有全球性又能保持一致性的數(shù)據(jù)中心的過(guò)程中,谷歌Spanner工程師做了一些令人完全意想不到的事情,而這也恰恰符合他們經(jīng)常都會(huì)出人意料的過(guò)往歷史。這個(gè)團(tuán)隊(duì)的成員不僅包括菲克斯和威爾遜·謝,同時(shí)還包括傳奇性的谷歌人物杰夫·迪恩(Jeff Dean)和桑杰伊·格馬瓦特(Sanjay Ghemawa)以及其他很多工程師,這些工程師都曾致力于開(kāi)發(fā)開(kāi)創(chuàng)性的數(shù)據(jù)中心平臺(tái),如Megastore和Dremel等。
而這一次,他們找到了一種讓時(shí)間保持一致的新方法。
“作為一名分布式系統(tǒng)開(kāi)發(fā)者,你會(huì)受到這樣的教育——我想說(shuō)的是,從孩提時(shí)代就開(kāi)始受到這種教育——那就是不要相信時(shí)間。”菲克斯說(shuō)道。“我們所做的事情就是找到一種方法來(lái)讓我們能相信時(shí)間——以及理解相信時(shí)間意味著什么。”
時(shí)間是極其重要的
在網(wǎng)絡(luò)上,時(shí)間是極其重要的。沒(méi)錯(cuò),當(dāng)運(yùn)行一項(xiàng)大型網(wǎng)絡(luò)服務(wù)時(shí),你需要事情迅速地發(fā)生。但你還需要一種精確追蹤許多電腦的時(shí)間的方法,這些電腦為你的服務(wù)提供支持。你必須同步在每臺(tái)服務(wù)器上運(yùn)行的許多進(jìn)程,而且還必須對(duì)服務(wù)器本身進(jìn)行同比,這樣一來(lái)它們才能協(xié)同運(yùn)作。而想要做到這一點(diǎn)可謂“知易行難”。
通常情況下,數(shù)據(jù)中心運(yùn)營(yíng)商會(huì)使用所謂的“網(wǎng)絡(luò)時(shí)間協(xié)議”(Network Time Protocol,NTP)來(lái)保持服務(wù)器的的同步,這從本質(zhì)上來(lái)說(shuō)是一種將電腦與官方原子鐘聯(lián)系到一起的在線服務(wù),從而讓全世界各地組織的時(shí)間保持一致。但是,由于在一個(gè)網(wǎng)絡(luò)中傳輸信息需要時(shí)間的緣故,這種方法從來(lái)都無(wú)法做到完全精確,而且有些時(shí)候還會(huì)完全失效。在今年7月份,幾家主要的網(wǎng)絡(luò)公司——包括Reddit、Gawker和Mozilla等——就遭遇了問(wèn)題,原因是其軟件沒(méi)有做好應(yīng)對(duì)“閏秒”(為保持協(xié)調(diào)世界時(shí)接近于世界時(shí)時(shí)刻,由國(guó)際計(jì)量局統(tǒng)一規(guī)定在年底或年中對(duì)協(xié)調(diào)世界時(shí)增加或減少1秒的調(diào)整)的準(zhǔn)備。
但在Spanner數(shù)據(jù)庫(kù)中,谷歌摒棄了“網(wǎng)絡(luò)時(shí)間協(xié)議”,轉(zhuǎn)而使用自己的時(shí)間協(xié)調(diào)機(jī)制,這個(gè)機(jī)制被稱為“TrueTime API”。“我們想要一種能讓自己信得過(guò)的東西。”菲克斯說(shuō)道。“那就是谷歌自己擁有的時(shí)間基準(zhǔn)。”
谷歌沒(méi)有依靠外部時(shí)鐘,而是在其Spanner數(shù)據(jù)中心里配備了自己的原子鐘和GPS(全球定位系統(tǒng))接收器,這與你iPhone中的應(yīng)用是不一樣的。通過(guò)環(huán)繞地球進(jìn)行軌道運(yùn)行的衛(wèi)星所構(gòu)成的網(wǎng)絡(luò),GPS接收器不僅可以精確找到你所在的位置,而且還能精確報(bào)時(shí)。
這些時(shí)間協(xié)調(diào)裝置會(huì)連接到特定數(shù)量的主服務(wù)器,然后再由主服務(wù)器向整個(gè)谷歌網(wǎng)絡(luò)中運(yùn)行的其他電腦傳輸時(shí)間讀數(shù)?;旧蟻?lái)說(shuō),谷歌網(wǎng)絡(luò)中的每臺(tái)電腦都會(huì)運(yùn)行一個(gè)后臺(tái)程序,這個(gè)程序會(huì)不斷地與同一個(gè)數(shù)據(jù)中心及其他谷歌數(shù)據(jù)中心的主服務(wù)器進(jìn)行聯(lián)系,試圖達(dá)成協(xié)調(diào)一致的時(shí)間。通過(guò)這種方式,整個(gè)谷歌網(wǎng)絡(luò)中的電腦都會(huì)相當(dāng)接近于運(yùn)行一個(gè)通用時(shí)鐘。