1. 程式人生 > >從 paxos 到 zookeeper(一):分散式架構之從集中式到分散式

從 paxos 到 zookeeper(一):分散式架構之從集中式到分散式

1.1 序言

隨著計算機系統規模變得越來越大,將所有的業務單元集中部署在一個或者若干個大型機上的體系結構,已經越來越不能滿足當今計算機系統,尤其是大型網際網路系統的快速發展,各種靈活多變的系統架構模型層出不窮。同時,隨著微型計算機的出現,越來越多的廉價的PC機成為了各大企業IT架構的首選,分散式的處理方式越來越受到業界的青睞-----計算機系統正在經歷一場前所未有的從集中式向分散式架構的變革。

1.2 從集中式到分散式

從20世紀80年代以來,計算機系統向網路化和微型化的發展日趨明顯,傳統集中式處理模式越來越不能適應人們的需求
首先,大型主機的人才培養成本非常之高。通常一臺大型主機彙集了大量精密的計算機元件,操作非常複雜,這對一個運維人員掌握其技術細節提出了非常高的要求。
其次,大型主機也是非常昂貴的。通常一臺配置較好的IBM大型主機要上百萬美元甚至更高。

1.3集中式的特點

所謂的集中式系統就是指由一臺或多臺計算機組成中心節點,資料集中儲存於這個中心節點中,並且整個系統的所有業務單元都集中部署在這個中心節點上,系統的所有功能均能由其集中處理。也就是說,在集中式系統中,每個終端或客戶端機器僅僅負責資料的錄入和輸出,而且資料的儲存和控制處理完全交由主機來完成。
集中式系統最大的特點就是部署結構簡單。由於集中式系統往往基於底層效能卓越的大型主機,因此無需考慮如何對服務進行多個節點的部署,也就不用考慮多個節點之間的分散式協作問題

1.4分散式的特點

在<<分散式系統概念與設計>> 一書中,對於分散式系統做了如下的定義:
分散式系統是一個硬體或者軟體元件分佈在不同的網格計算機上,彼此之間僅僅通過訊息傳遞進行通訊和協調的系統
嚴格的來說,同一個分散式系統中計算機在空間部署上是可以隨意分佈的,這些計算機可能被放在不同的機櫃上面,也可能在不同的機房當中,甚至分佈在不同的城市。無論如何,一個標準的分散式系統在沒有任何特定業務邏輯的約束下都會有如下幾個特性:
1.4.1 分佈性


分散式系統中的多臺計算機都會在空間上隨意分佈的,同時,機器的分佈情況也會隨時變動。
1.4.2 對等性
分散式系統中的計算機是沒有主從之分的既沒有控制整個系統的主機,也沒有被控制的從機。組成分散式系統的所有的計算機都是對等的。副本是分散式系統最常見的概念之一指的是分散式系統對資料和服務提供的一種冗餘方式。再常見的分散式系統中,為了對外提供高可用服務,我們往往會對資料進行副本處理。資料副本是指在不同的節點上持久化同一份資料,檔某一個節點上的儲存資料丟失的時候,可以從副本讀取到該資料,這個是解決分散式系統資料丟失最有效的手段。另一類就是服務副本,指多個節點提供同樣的服務,每個節點都有能力接受來自外部的請求並進行相應的處理。
1.4.3. 併發性

在一個計算機網格中,程式執行過程中的併發性操作是非常常見的行為,例如在同一個分散式系統的多個節點,可能會併發的操作一些共享的資源,諸如資料庫的分散式儲存等,如何準確並高效的協調分散式併發操作也成為分散式系統架構與設計的最大挑戰之一。
1.4.4 缺乏全域性時鐘
一個典型的分散式系統是由一系列在空間上隨意分佈的多個程序組成的,具有很明顯的分佈性,這些程序之間通過交換訊息來進行相互通訊,因此在分散式系統中,很難定義兩個事件究竟誰先誰後,原因就是因為分散式系統缺乏一個全域性的時鐘序列控制。
1.4.5 故障總會發生
組成分散式系統的所有計算機,都有可能發生任何形式的故障。一個被大量工程檢驗的過的黃金定律:任何在設計階段考慮的異常情況,一定會在實際系統中發生,並且,在系統實際執行中還會遇到許多在實際時未能考慮到的異常故障。所以,除非需求指標允許,在系統設計時不能放過任何異常情況。

1.5分散式環境的各種問題

分散式系統體系結構從其出現之初九伴隨著許多的難題和挑戰,下面介紹一些可能遇到的一些典型問題。
1.5.1 通訊異常
從集中式到分散式演變的過程中,必然引入了網路因素,而且網路本身的不可靠性,因此也引入了額外的問題。分散式系統需要在各個節點進行網路通訊,因此每次網路通訊都會都會伴隨著網路不可用的風險。另外即使分散式系統之間的網路通訊是正常的,其延時也是遠遠大於單機操作。通常單機訪問延時大概在10 ns 左右正常一次網路通訊延遲在0.1~1ms 左右。差距105倍因此訊息丟失和訊息延遲變得非常普遍。
1.5.2網路分割槽
當網路由於發生異常情況,導致分散式系統中部分節點之間的網路延遲不斷增大,最終導致組成部分分散式系統的所有節點中,只有部分節點之間能夠進行正常的通訊,而另一些節點則不能--------我們將這個現象稱為網路分割槽,就是俗稱的腦裂。當網路分割槽出現時,分散式系統出現區域性小叢集,在極端情況下,這些區域性小叢集會獨立完成原本要整個分散式系統才能完成的功能,包括對資料的事務處理,這就對分散式一致性提出了非常大的挑戰。
1.5.3 三態
從上面的介紹中,我們已經瞭解在分散式環境下,網路可能會出現各種各樣的問題,因此分散式系統的每一個請求與相應,存在特有的三態概念,即成功,失敗與超時。在與傳統的單機系統中,應用程式在呼叫一個函式之後,能夠得到一個非常明確的響應成功或者失敗。而在分散式系統中,由於網路的不可靠性,雖然在大部分情況下能得到一個明確的響應。但是由於網路出現異常的情況下,就可能出現超時現象,通常有如下兩種情況。
1.由於網路出現原因該請求並沒有成功的傳送到接收方,而是在傳送過程中發生了資料丟失的情況。
2.該請求成功的被接收方接收,並進行了處理,但是在響應反饋傳送方的時候發生了訊息丟失的情況。
當出現這樣的超時現象時,網路通訊的發起方時無法確定當前請求是否被處理成功的
1.5.4節點故障
節點故障則是分散式環境下另一個常見的問題,指的是組成分散式系統的機器的節點出現了宕機或者僵死的現象,一般來說每個節點都有可能出現故障,並在每天都有可能發生

歡迎關注,更多福利

這裡寫圖片描述