【編者按】MapReuce、Google File System、Bigtable、Percolator、Pregel、Dremel、Spanner,近十年Google為業(yè)界貢獻(xiàn)了大量影響深遠(yuǎn)的論文,也催生了許多優(yōu)秀的開(kāi)源產(chǎn)品,其中Hadoop、HBase更成為大數(shù)據(jù)處理、儲(chǔ)存的通用平臺(tái)。近日,Google的一批前員工,以蟑螂為項(xiàng)目命名,旨在建立Spanner的精簡(jiǎn)開(kāi)源版本,然而他們的時(shí)間似乎并沒(méi)有那么寬裕。
以下為譯文:
蟑螂是這個(gè)地球上生命力最強(qiáng)的生物之一。沒(méi)有空氣情況下可以存活45分鐘,沒(méi)有食物時(shí)甚至可以存活超過(guò)一個(gè)月??诚骂^顱都不能殺死它們,至少不是立刻死亡,它們?cè)跊](méi)有頭的情況下還能存活好幾天。
在Google、亞馬遜以及Facebook等科技巨人里面,工程師們先進(jìn)的技術(shù)同樣是在幫助它們網(wǎng)站不那么容易被停掉。他們必須做到,在一個(gè)/多個(gè)服務(wù)器,甚至整個(gè)數(shù)據(jù)中心丟失的情況下,站點(diǎn)仍然能繼續(xù)運(yùn)轉(zhuǎn)。這個(gè)至關(guān)重要,因?yàn)槊恳幻氲耐C(jī)時(shí)間都意味著巨額收入損失。
Google、亞馬遜以及Facebook等科技巨人,工程師們革新的技術(shù)同樣幫助網(wǎng)站不那么容易被停掉。
現(xiàn)在,一個(gè)開(kāi)源的開(kāi)發(fā)團(tuán)隊(duì)希望讓所有的公司都能夠很容易的構(gòu)建這種適應(yīng)力強(qiáng)大的云計(jì)算系統(tǒng),這樣就可以像Google一樣運(yùn)行在線系統(tǒng)了。他們將這個(gè)項(xiàng)目叫做 CockroachDB,將它宣傳為一個(gè)能夠持久運(yùn)行的數(shù)據(jù)庫(kù)。對(duì)軟件來(lái)說(shuō)這個(gè)名字聽(tīng)起來(lái)有些古怪,但是Spencer Kimball(創(chuàng)始合伙人,Google前工程師)認(rèn)為它非常合適,“這個(gè)名字代表了它的非常重要的兩個(gè)特性:當(dāng)然有殘存性,還有基本上能夠自發(fā)地?cái)U(kuò)展到可用的硬件?!?/p>
跟很多其他的設(shè)計(jì)用來(lái)驅(qū)動(dòng)大型在線操作的開(kāi)源項(xiàng)目類似,CockroachDB同樣基于Google的大數(shù)據(jù)論文—— Spanner。Spanner是一個(gè)影響廣泛的軟件,最終允許Goolge 在全世界范圍內(nèi)上百個(gè)數(shù)據(jù)中心的數(shù)以百萬(wàn)計(jì)的服務(wù)器間傳播數(shù)據(jù),Google花費(fèi)了不止5年的時(shí)間來(lái)構(gòu)建它。即使已經(jīng)有Google的論文,CockroachDB的程序員仍然有很多的工作要面對(duì),這是一個(gè)很偉大的藍(lán)圖。
散布各地的Google前雇員
截至當(dāng)下,這個(gè)項(xiàng)目還在“alpha”開(kāi)發(fā)階段,遠(yuǎn)遠(yuǎn)沒(méi)有準(zhǔn)備好用作產(chǎn)品服務(wù)。Spanner作為計(jì)算歷史上讓人印象最為深刻的系統(tǒng)之一,如果真能得到開(kāi)源實(shí)現(xiàn),或許就只有CockroachDB團(tuán)隊(duì)了。他們中相當(dāng)一部分是Google前工程師,即使不是Spanner項(xiàng)目組成員。Kimball 和Peter Mattis,作為Photoshop的開(kāi)源替代品GIMP的創(chuàng)始合伙人,幫助創(chuàng)立了Google的大文件存儲(chǔ)系統(tǒng) Colossus。Ben Darnell在Google Reader工作過(guò),Andy Bonventre則曾經(jīng)為Chrome和Google Tasks工作過(guò)。
團(tuán)隊(duì)中的大部分成員現(xiàn)在為支付新貴Square(Viewfinder被收購(gòu)后)工作,包括including Kimball、Andy Kimball、Darnell、Mattis以及 Shawn Morel。但是Kimball指出Square不支持CockroachDB。他和他的同事只能利用業(yè)余時(shí)間在開(kāi)發(fā)。有些人,比如Bonventre和Tobias Schottdorf,則非Square員工。
只在晚上以及周末來(lái)重構(gòu)Spanner聽(tīng)起來(lái)有點(diǎn)天方夜譚了,即使是地球上最好的工程師。然而,并不是每一個(gè)公司都需要達(dá)到Google的級(jí)別,但是Kimball指出Viewfinder團(tuán)隊(duì)已經(jīng)使用了一些Google的技術(shù),在Square漸入佳境并且很快就能派上用場(chǎng)。并且因?yàn)樵谑袌?chǎng)上還沒(méi)有類似Spanner的產(chǎn)品,Kimball和他們的公司才下決心自己創(chuàng)建它。
CockroachDB并不試圖復(fù)制Spanner最引人注目的部分——使用原子鐘(atomic clock)來(lái)同步跨全球網(wǎng)絡(luò)的數(shù)據(jù)中心的時(shí)間。考慮到大部分的在線運(yùn)營(yíng)商不太可能達(dá)到Google的規(guī)模(同時(shí)運(yùn)行成千上萬(wàn)的服務(wù)器),他們并不需要這個(gè)。Kimball指出,這些公司實(shí)際需要一種非??煽康姆绞接脕?lái)自動(dòng)在不同的數(shù)據(jù)中心間復(fù)制信息,以保證某個(gè)數(shù)據(jù)中心丟失不會(huì)造成服務(wù)中斷,這樣一來(lái),服務(wù)就像還在那個(gè)地方運(yùn)行一樣,這就是CockroachDB旨在提供的功能。
更大的表
Spanner是另一個(gè)Google數(shù)據(jù)庫(kù)BigTable的繼任者,它打破了數(shù)據(jù)庫(kù)行業(yè)的很多悠久的傳統(tǒng),開(kāi)辟了新的途徑來(lái)創(chuàng)立高度可縮放的軟件。Google在2006年發(fā)表了一個(gè)關(guān)于BigTable的白皮書(shū)之后,它的想法很快被開(kāi)源克隆所采用,比如 Cassandra和 Hbase迅速成為一些公司的核心技術(shù),像Facebook、Twitter和Netflix,開(kāi)啟了所謂“NoSQL”的改革浪潮。
但是當(dāng)NoSQL數(shù)據(jù)庫(kù)幫助公司將信息存儲(chǔ)到大量的機(jī)器上時(shí),也在某些方面制造了一些麻煩。像BigTable這個(gè)數(shù)據(jù)庫(kù)就犧牲了一致性這個(gè)古老的數(shù)據(jù)庫(kù)概念,這是指當(dāng)你在數(shù)據(jù)庫(kù)的某一個(gè)部分做修改時(shí),無(wú)須關(guān)心另一個(gè)部分在做什么。
問(wèn)題是當(dāng)數(shù)據(jù)庫(kù)就運(yùn)行在一臺(tái)機(jī)器上時(shí),一致性是相當(dāng)容易的,但是當(dāng)規(guī)模擴(kuò)大并擴(kuò)展到不同的數(shù)據(jù)中心時(shí),一致性就變得更加困難了。對(duì)很多應(yīng)用來(lái)說(shuō),比如即時(shí)消息,這不是一個(gè)大問(wèn)題。但是如果你做些類似于在線銀行的事情,這就是個(gè)很大的問(wèn)題了。數(shù)據(jù)庫(kù)的一部分可能會(huì)認(rèn)為某人的帳戶上有很多的錢(qián),沒(méi)有意識(shí)到所有的錢(qián)已經(jīng)在另一部分被取走了。另外,缺少一致性,當(dāng)部分?jǐn)?shù)據(jù)庫(kù)出現(xiàn)故障了也會(huì)引起問(wèn)題。Spanner解決了這些問(wèn)題,CockroachDB追隨了它的腳步。
與蟑螂一樣的生命力
Spanner在不犧牲性能的同時(shí)保證了跨數(shù)據(jù)中心的一致性。另外通過(guò)F1,使得公司可以使用標(biāo)準(zhǔn)的SQL語(yǔ)句查詢數(shù)據(jù)庫(kù)(通用語(yǔ)就是信息檢索)。盡管運(yùn)行了成千上萬(wàn)的服務(wù)器,Spanner數(shù)據(jù)庫(kù)就像是在一臺(tái)單獨(dú)的機(jī)器上運(yùn)行一樣。如果數(shù)據(jù)中心故障了,應(yīng)用可以通過(guò)簡(jiǎn)單的ping另一個(gè)數(shù)據(jù)中心來(lái)獲取需要的信息,因?yàn)樗械臄?shù)據(jù)是跨數(shù)據(jù)中心無(wú)縫同步。CouchroachDB可以做一些類似的事情,盡管沒(méi)有原子鐘,它可能沒(méi)有那么快完成或者同步那么多數(shù)據(jù)。
Kimball和他的同事的目標(biāo)是創(chuàng)建些比Google的產(chǎn)品更容易建立的東西,Google的基礎(chǔ)項(xiàng)目?jī)A向于相互依賴。Spanner 需要Colossus,而Colossus也需要稱之為Chubby的維護(hù)系統(tǒng)。但是CockroachDB的目標(biāo)是創(chuàng)建一個(gè)獨(dú)立的系統(tǒng),它不需要依靠某些特定的文件系統(tǒng)或者文件管理器。這個(gè)團(tuán)隊(duì)同樣計(jì)劃添加F1這個(gè)SQL查詢工具到這個(gè)項(xiàng)目。Kimball指出如果亞馬遜或者其他的云主機(jī)公司開(kāi)始添加原子鐘到他們的數(shù)據(jù)中心,CockroachDB最終也可以利用起來(lái)。
Kimball指出,如果這個(gè)數(shù)據(jù)庫(kù)最終超越了一些有內(nèi)部資源來(lái)管理的大公司,一些商業(yè)公司將需要為軟件提供支持。但是Kimball也指出需要早點(diǎn)考慮這個(gè)問(wèn)題。如果這些確實(shí)發(fā)生了,這個(gè)計(jì)劃是否需要尋找一個(gè)更好聽(tīng)的名字呢?Kimball不這樣認(rèn)為。“人們更容易記住一些帶有強(qiáng)烈正面或者負(fù)面情緒的東西,這個(gè)已經(jīng)得到了證明?!彼f(shuō),“我也想找到一個(gè)帶有超強(qiáng)正面情緒沖擊的名字,但是我沒(méi)有找到,“RainbowDB”聽(tīng)起來(lái)就很沒(méi)勁。
原文鏈接: http://www.wired.com/2014/07/cockroachdb/(翻譯/海霞 責(zé)編/仲浩)
聯(lián)系客服