Monday, 24 December 2012

透視Google資料庫全球同步的祕密:Google Spanner系統(上)

每天早上,費克斯(Andrew Fikes)走進Google位於美國加州的總部,坐在辦公桌前,打開視訊會議功能,然後連結至紐約。

他看著眼前的螢幕,跟位於曼哈頓辦公室裡的威爾森.謝(Wilson Hsieh)相見,也同時連線至華盛頓州的辦公室,工程團隊散布於國內三地,但仍可隨時聊天、討論、除錯,沒有毫秒之差,這正是Google建立全球最大單一資料庫Spanner的方式。

費克斯於2001年進入Google,如今為該公司相當重要的軟體工程師,他表示,「只要進入Google辦公室,視訊會議就隨時開啟,多年來都如此,降低各種通訊常見的障礙。」

這種安排非常妥善,Spanner運作方式一如幕後工程團隊,雖然散布全球,營運卻彷彿全都集中於一地,經過外界多年揣測與窺探,Google終於在今年秋天公布這座資料庫,跨越無數資料中心與機組,流暢處理無數資訊。

Spanner規模非常龐大,甚至超過某些人理解範圍,但最終成果卻顯而易見:讓Google可向全球用戶提供網路服務,同時確保世界任何地方的網路活動不會彼此矛盾。

這座新時代資料庫已成為該公司網路廣告系統的一部分,不僅賺進高額營收,也象徵網路未來趨勢。Google於九月中發表報告,詳述Spanner資料庫功能,引發議論紛紛;幾星期後,威爾森.謝於加州好萊塢一場研討會上簡報,旋即在電腦系統工程師之間引起話題。

工程師墨西(Raghu Murthy)參與建置Facebook網站幕後龐大軟體平台,他認為這套系統確實很有意思,不過Facebook目前尚未打算跟進。

因為Google運作遠比多數網站複雜許多,故不得不自行開發軟體,規模遠超過多數網路企業,不過隨著網路持續成長,這些作品也陸續在世界上普及。

Spanner亮相之前,許多人覺得這種資料庫概念絕無可能實現。過去已有「NoSQL」資料庫,能橫跨多座資料中心儲存資訊,但無法同時確保資訊內容一致,故人們在世界兩端存取資料時,可能出現落差,因為資料中心彼此傳輸資訊時,勢必會出現延遲與時間差。

為建造全球一致的資料庫,Google工程師的作為完全出人意表,也符合一貫風格,開發團隊除了上述兩人,還包括Google重要成員,如迪恩(Jeff Dean)、傑馬華(Sanjay Ghemawat)等人,過去都曾投入Megastore、Dremel等突破成規的資料中心平台。

此次他們發現維持一致的新方法。

費克斯表示,「身為離散式系統開發人員,一大守則即為不要相信時間,但運用我們找到的方式,即可相信時間,並真正瞭解相信時間的意涵。」

網路的本質即為時間,若經營大型網路服務,一切必須從速,但也得找到追蹤服務背後眾多機器時間的方式,必須協調每座伺服器內各種流程,伺服器之間也得同步,才得以依序運作,說來容易,實際操作很難。

通常資料系統營運單位會使用「網路時間協定」(NTP),以維持伺服器時間一致,這項網路服務串連機組與世界各組織定時的官方原子鐘,但由於在網絡內傳遞資訊需要時間,這種方式從未完全正確,有時更會完全癱瘓。今年七月,Reddit、Gawker、Mozilla等多家知名網路企業都遇上問題,因為全球原子鐘增加閏秒,但軟體卻未提早因應

不過在Spanner系統裡,Google捨棄「網路時間協定」,自行開發計時機制,稱為「TrueTime應用程式介面」,費克斯指出,「我們希望使用可信賴的制度,而這是Google擁有的時間參考裝置。」

Google不再仰賴其他外來時鐘,而在每座資料中心內都設置原子鐘與全球定位系統接收器,與各位手中的iPhone類似,藉由繞地球運行的衛星鎖定位置,同時計算時間。

這些計時裝置連結至多座主要伺服器,由伺服器傳送時間讀數至Google網絡內各組機器,每組機器都建置軟體程式,不時與Google各資料中心的主要伺服器對時,如此讓網絡內所有機器幾乎皆依據同一時鐘運作。

拜這項服務之賜,Google能讓全球眾多機器同步,縱然分屬不同資料中心,亦能迅速儲存及檢索資料,而不會彼此扞格。

費克斯表示,「例如資料可分別存放於美國西岸及歐洲,卻仍保持相同次序,若讀寫順序為西岸先、歐洲後,整個系統都將知道,不可能出現相異次序」。

 

延伸閱讀:透視Google資料庫全球同步的祕密:Google Spanner系統(下)



from WIRED.tw http://wired.tw/2012/12/25/google-spanner-time-1/index.html