分佈式架構

隨着計算機系統規模變得越來越大,將所有的業務單元集中部署在一個或若干個大型機上的體系結構,已經越來越不能滿足當今計算機系統,分佈式的處理方式越來越受到業界的青睞——計算機系統正經歷從集中式向分佈式架構的變革。

分佈式的特點

分佈式系統是一個硬件或軟件組件分佈在不同的網絡計算機上,彼此之間僅僅通過消息傳遞進行通信和協調的系統。分佈式系統主要有如下幾個特徵:
  • 分佈性
分佈式系統中的多臺計算機都會在空間上隨意分佈,同時機器的分佈狀況也會隨時變動。
  • 對等性
分佈式系統中的計算機沒有主從之分,即沒有控制整個系統的主機,也沒有被控制的從機,組成分佈式系統的所有計算機節點都是對等的。
  • 併發性
在一個計算機網絡中,程序運行過程中的併發性操作是非常常見的行爲,例如同一個分佈式系統中的多個節點,可能會併發地操作一些共享的資源,諸如數據庫或者分佈式存儲等。
  • 缺乏全局時鐘
一個典型的分佈式系統是由一系列在空間上隨意分佈的多個進程組成的,具有明顯的分佈性,這些進程之間通過交換信息來進行相互通信。因此,在分佈式系統中,很難定義兩個事件究竟誰先誰後,原因就是因爲分佈式系統缺乏一個全局的時鐘序列控制。
  • 故障總是會發生
組成分佈式系統的所有計算機,都有可能會發生任何形式的故障。

分佈式環境的各種問題

     分佈式環境中存在一些典型的問題:

  • 通信異常
分佈式系統需要在各個節點之間進行網絡通信,因此每次網絡通信都會伴隨着網絡不可用的風險,網絡光纖、路由器或是DNS等硬件設備或者是系統不可用都會導致最終分佈式系統無法順利完成一次網絡通信。即使分佈式系統各節點之間的網絡通信能夠正常進行,其延時也會遠遠大於單機操作。
  • 網絡分區
當網絡由於發生異常情況,導致分佈式系統中部分節點之間的網絡延時不斷增大,最終導致組成分佈式系統的所有節點中,只有部分節點之間能夠進行正常通信,而另外一些節點則不能,這個現象稱爲網絡分區,俗稱“腦裂”。
  • 三態
分佈式系統中的每一次的請求與響應,存在特有的“三態”概念,即成功、失敗和超時。
  • 節點故障
組成分佈式系統的服務器節點出現的宕機或者“僵死”現象。

事務的ACID特性

事務是由一系列對系統中數據進行訪問與更新的操作所組成的一個程序執行邏輯單元,狹義的事務特指數據庫事務。一方面,當多個應用程序併發訪問數據庫時,事務可以在這些應用程序之間提供一個隔離方法,以防止彼此的操作互相干擾。另外一方面,事務爲數據庫操作序列提供了一個從失敗中恢復到正常狀態的方法,同時提供了數據庫即使在異常狀態下仍能保持數據一致性的方法。事務具有四個特徵:原子性,一致性,隔離性和持久性。事務的ACID特性如下圖所示:


分佈式事務

      在單機數據庫中,我們很容易實現一個滿足ACID特性的事務處理系統,但是在分佈式的數據庫中,數據分散在各個不同的機器上,如何對這些數據進行分佈式的事務處理具有非常大的挑戰,比如前面說到的機器宕機和各種網絡異常問題等。

      分佈式事務是指事務的參與者、支持事務的服務器、資源服務器以及事務管理器分別位於分佈式系統的不同節點之上。通常一個分佈式事務中會涉及到對多個數據源或業務系統的操作。例如,一個跨銀行的轉賬操作涉及調用兩個異地的銀行服務,其中一個是本地銀行提供的取款服務,另一個是目標銀行提供的存款服務,這兩個服務本身是無狀態並且是互相獨立的,共同構成了一個完整的分佈式事務。如果從本地銀行取款成功,但是因爲某種原因存款服務失敗了,那麼就必須回滾到取款前的狀態,否則用戶可能會發現自己的錢不翼而飛。一個分佈式事務可以看作是由多個分佈式的操作序列組成的,例如上面舉例中的取款服務和存款服務,通常可以把這一系列分佈式的操作序列稱爲子事務。

CAP和BASE理論

CAP定理

      CAP理論告訴我們,一個分佈式系統不可能同時滿足一致性(C:Consistency)、可用性(A:Available)和分區容錯性(P:Partition Tolerance)這三個基本需求,最多隻能同時滿足其中的兩項。CAP定理的示意圖如下所示:

        

  • 一致性
      在分佈式環境中,一致性是指數據在多個副本之間是否能夠保持一致的特性。在一致性的需求下,當一個系統在數據一致的狀態下執行更新操作後,應該保證系統的數據仍然處於一致的狀態。例如一個將數據副本分佈在不同分佈式節點上的系統來說,如果對第一個節點的數據進行了更新操作並且更新成功後,其他節點上的數據也應該得到更新,並且所有用戶都可以讀取到其最新的值,那麼這樣的系統就被認爲具有強一致性(或嚴格的一致性)。
  • 可用性

      可用性是指系統提供的服務必須一直處於可用的狀態,對於用戶的每一個操作請求總是能夠在有限的時間內返回結果。“有效的時間內”是指,對於用戶的一個操作請求,系統必須能夠在指定的時間(即響應時間)內返回對應的處理結果,如果超過了這個時間範圍,那麼系統就被認爲是不可用的。

      “返回結果”是可用性的另一個非常重要的指標,它要求系統在完成對用戶請求的處理後,返回一個正常的響應結果。正常的響應結果通常能夠明確的反映出對請求的處理結果,即成功或失敗,而不是一個讓用戶感到困惑的返回結果。

  • 分區容錯性

      分區容錯性約束了一個分佈式系統需要具有如下特性:分佈式系統在遇到任何網絡分區故障的時候,仍然需要能夠保證對外提供滿足一致性和可用性的服務,除非是整個網絡環境都發生了故障。

      網絡分區是指在分佈式系統中,不同的節點分佈在不同的子網絡(機房或異地網絡等)中,由於一些特殊的原因導致這些子網絡之間出現網絡不連通的狀況,但各個子網絡的內部網絡是正常的,從而導致整個系統的網絡環境被切分成了若干個孤立的區域。需要注意的是,組成一個分佈式系統的每個節點的加入與退出都可以看作是一個特殊的網絡分區。

      由於一個分佈式系統無法同時滿足上面的三個需求,而只能滿足其中的兩項,因此在進行對CAP定理的應用的時候,需要根據業務的要求拋棄其中的一項,下表所示是拋棄CAP定理中任意一項特性的場景說明。

      

      

      





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章