分布式系統介紹
目 錄
1 修改記錄...1
2 概要...2
3 分散式運算...3
1 概要
本文主要對大規模分布式系統的發展進行梳理,以加深理解。
2 分散式運算
隨著電腦技術的發展和資訊爆炸時代的來臨,人們對資料計算的需求越來越高,特別是海量資料的科學計算。傳統的單機受到計算速度、容量的限制已經無法滿足需求。在“網路+電腦”的基本思想下,分散式運算應運而生。
2.1.1 分散式運算定義
分布式系統由兩台或兩台以上機器組成的系統,具有物理上分布的實體資源和邏輯資源。這些資源高度自治和相互合作的工作。每台電腦都具有資料存放區功能和資料處理能力。在分散式運算中,資料處理不是由單機完成而是由多台機器協作完成。比如一項工作P,由兩部分組成 p1和p2。我們把p1放在機器A上完成,p2放在機器B上完成,這些就形成一個分散式運算。
2.1.2 主流分布式技術
現在分散式運算問題基本可以採用google的三個技術解決,分別為:GFS,MapReduce,Bigtable,這三個技術被稱為“google三駕馬車”,google只公開了論文而未開原始碼,開源界對此非常有興趣,仿照這三篇論文實現了一系列軟體,如:Hadoop、HBase、HDFS、Cassandra等。
在google這些技術還未出現之前,企業界在設計大規模分布式系統時,採用的架構往往是database+sharding+cache。
該架構解釋如下:前端cache是為了提高響應速度,後端資料庫則用於資料永久儲存,防止資料丟失,而sharding是為了在多台機器間分攤負載。最前端由大塊大塊的cache組成,要保證至少99%(的訪問資料落在cache中,這樣可以保證使用者訪問速度,減少後端資料庫的壓力,此外,為了保證前端cache中資料與後端資料庫中資料一致,需要有一個中介軟體非同步更新(為啥非同步?理由簡單:同步代價太高。非同步有缺定,如何彌補?)資料,這個有些人可能比較清楚,新浪有個開源軟體叫memcachedb(整合了Berkeley
DB和Memcached),正是完成此功能。另外,為了分攤負載壓力和海量資料,會將資料經過分區後存放到不同節點上(稱為“sharding”)。
這種架構優點非常明顯:簡單,在資料量和使用者量較小的時候完全可以勝任。但缺定早晚一天暴露出來,即:擴充性和容錯性太差,維護成本非常高,尤其是資料量和使用者量暴增之後,系統不能通過簡單的增加機器解決問題。
而上述所有問題都可以用google引導的分散式運算策略解決大型的、分布式的、對大量資料的訪問。
參考文獻:http://dongxicheng.org/search-engine/system-designing-in-finging-jobs/