【編者按】在軟件體系結構上,分散和集中的使用一直存在著爭議。同時,隨著網絡帶寬、硬件成本、內存的容量變大,分散式似乎大有可為。然而,從創新不斷的Google身上,我們似乎看到了一些別的東西。下面我們一起看HighScalability創始人TodHoff的報道,以下為原文:
在軟件體系結構趨勢中,分散式服務的理念與集中式服務帶來的能力及實用性之間一直存在分歧。然而現在看來,集中服務,至少在管理和控制平面層更勝一籌。Google不僅贊同這種模式(他們一直以來都是這種模式的狂熱采納者),還在你意想不到的地方投入使用。
這里摘抄Timothy Morgan一篇非常棒的博文――《谷歌掀開“仙女座(Andromeda)”虛擬網絡的神秘面紗》,其中還引用了Google杰出的工程師和網絡技術負責人Armin Vahdat的話:
“像Google創建的其他多數服務一樣,Andromeda網絡采用的是集中控制。順便提一下, GFS整個數據處理平臺(Hadoop啟發系統),BigTable(為市面上大量NoSQL模仿),甚至B4WAN網絡及Spanner這樣尚未被模仿的系統都使用集中控制。
我們可以看到,一個帶有P2P數據平面且邏輯集中的分級控制層服務完勝全分散式服務。Vahdat在他的keynote中寫道,“這一切都沖擊著傳統的思想,”他繼續說道:“除了上述項目,所有人都會對Google早在2002建立的大型存儲系統GFS而感到震撼。對于這個設計模式,我們是非常有信心的。我們通過審慎利用集權而不是以對等且分散的管理方式,從根本上建立一個更高效的系統。”
文章的背景是谷歌的令人印象深刻的自主研發SDN系統,它使用了集中控制而不是互聯網的Autonomous System,其將互聯網看作一座孤立的島嶼,通過路由協議與“外界”聯系。GrregFerro解釋道,SDN完全改變了傳統的模式:
SDN和傳統網絡之間的主要區別在于:SDN是基于控制器的網絡模型。軟件定義網絡的集中控制器涵蓋了整個網絡端到端的視圖,它將所有的網絡路徑和設備能力信息保存在一個應用程序中。因此,控制器可以基于源地址和目的地址計算它們之間的路徑;針對不同流量類型決定不同的網絡路徑;并快速響應不斷變化的網絡環境。
除了提供這些特性之外,該控制器還可作為一個可配置節點。SDN最有價值的一方面就是:它可以通過這個單一配置節點控制整個網絡并編程以實現自動化。
所以,集中控制器知道并能看到一切,它可直接編程實現硬連線的路由。以前,當發現錯誤后帶來的BGP收斂時間會損耗性能。現在,您硬件上有了SDN,那么故障響應會非常迅速,因為集中控制器將會按照會預先計算出的可替代路由來編碼路由。這也是當下云系統能具有高可用性、低延時連接,甚至跨越廣域網的一個主要原因。
那么,這是否就意味著該控制器是一個單一的過程呢?也不盡然。它只是在邏輯上集中,同樣可以像任何的典型服務體系結構一樣,在眾多的機器中(物理上)實現可分布式。這就是它擴展的方式。除下規模達到了非常大的程度,而想要采用完全分散式的架構顯然是不明智的(即使在這個硬件便宜,內存和網絡帶寬飛速發展的時代)。
就互聯網規模而言,邏輯和物理上分散式的 Autonomous System 模型仍然有所作為,它有良好的擴展性,雖然以極高的協調成本和緩慢的響應為代價。然而,在過去,這是可行的,但對于今天的網絡需求,已經不再有優勢。
谷歌玩的不只是互聯網,而是具有特定需求的特殊網絡合集。那么,他們為什么會對完全不同的需求使用一個通用的技術?
集中式贏在其構造出的產品廣受歡迎
電子郵件和NNTP,都是分散式服務的代表,但是已經讓位給了集中式服務,如Twitter,Facebook,G+和WhatsApp等推送服務。
集中化使得很多事情變得更加容易,例如搜索。如果你想要一個非常棒的搜索,那么你就需要在一個地方得到所有的數據,這就是為什么谷歌抓取網頁并存儲起來的原因。集中化最大優點就是保持一致性,例如追蹤清單、關聯、A / B測試、頻繁推送、反復設計、欺詐檢測、DDoS攻擊防護、深度學習,以及創建具有高附加值的任何類型功能。
另外,如果你將一個不在控制下的遠程實體作為產品的一個重要組成部分,必會導致一個長延遲和失敗的用戶體驗,這并不是你在服務中想得到的東西,端到端控制才是創造良好用戶體驗的關鍵。因此,特性或可擴展性上全分散式架構毫無優勢。
全分散式有時也是一種政治選擇
例如,使用分散或 federated的方式創建Twitter,雖然這在技術上是可行的,卻沒有被普遍采用。原因很簡單,集中式有效且能達到用戶的要求,這個是最主要的原因。次要原因,如安全、擁有自己的數據、應變能力、言論自由等,雖然對于有些公司來說比較重要,但是通常情況下對許多公司都沒有影響。
Doc Searls在像“逃出集中式的黑洞”這樣的文章中提到一個分散式涉到人權和個人主權問題的例子,干預1個由大型匿名公司控制的全分散式且P2P加密的聊天系統要比1個集中式服務難得多。
那么開發者究竟該如何選擇
如果是出于個人主權的考慮,或者是基于網絡或跨地理位置,或者必須自主運行的,那么federated將會是你最好的選擇。
如果您的系統非常小,那么完全集中式架構還是相當有吸引力的。
同時,對于處于廣大中間地帶的朋友們,谷歌已經證明:結合分布式數據并集中管理和控制基本已成為現在的規范架構。不要試圖使一切工作都分布式,構建難度會讓你望而卻步。
原文連接: Google Finds: Centralized Control, Distributed Data Architectures Work Better than Fully Decentralized Architectures(翻譯/陶星 責編/仲浩 )
以“ 云計算大數據 推動智慧中國 ”為主題的 第六屆中國云計算大會 將于5月20-23日在北京國家會議中心隆重舉辦。產業觀察、技術培訓、主題論壇、行業研討,內容豐富,干貨十足。票價優惠,馬上 報名 !