Zookeeper分佈式一致性原理與實踐(一)

分佈式架構

集中式架構的特色

有一臺或者多臺計算機組成中心節點,數據的存儲和處理能力都放在了這個中心節點。因此集中式的特色是部署結構簡單,無需考慮多節點的協做問題。數據庫

分佈式結構的特色

分佈式系統是一個硬件或者軟件分佈在不一樣的網絡的計算機上,這個定義包含了幾乎全部有效的部署上是能夠因此分佈的。標準的分佈式系統在沒有任何特定業務邏輯約束的狀況下,有以下幾個特徵。服務器

  1. 分佈性網絡

    分佈式系統中的多臺計算機都會在空間上隨意的分佈,同時,機器的分佈狀況也會隨時變更。架構

  2. 對等性併發

    分佈式系統的計算機沒有主/從之分,既麼誒有控制真個系統的主機,也沒有被控制的從機,組成分佈式系統的索引計算機節點都是對等。副本是(replica)是分佈式系統的最多見的概念之一,指的設計分佈式系統對數據和服務提供的一種冗餘方式。通常的分佈式系統都須要高可用,須要對數據和服務提供副本的冗餘。數據副本是指在不一樣的節點上持久化同一份數據,當數據丟失時能夠從副本上讀取數據,服務副本是指多個節點提供了一樣的服務,每一個節點都有能力接收來自外部的請求並進行相應的處理。分佈式

  3. 併發性spa

    在一個計算機網絡中,程序運行過程當中的併發是指多個分佈式系統節點能夠併發的操做一些共享的資源。計算機網絡

  4. 缺少全局時鐘設計

    分佈式系統的分佈特性使得服務之間的通訊只能經過消息的交換來實現。所以在分佈式系統中很難定義誰先誰,緣由是缺少一個全局的時鐘序列控制。code

  5. 故障老是會發生的

    組成分佈式系統的全部計算機,都有可能發生任何形式的故障。

分佈式的問題

  1. 通訊異常

    從集中到分佈的過程就必然會引發網絡的因素,因爲網絡自己的不可靠也額外的引入了這個問題。

  2. 網絡分

    分佈式的節點之間的網絡問題就引發了部分節點之間沒法通訊,而部分節點是能夠通訊的,這個現象稱爲網絡分區,俗稱爲"腦裂"。在極端的狀況下這些集羣能夠完成本來小整個分佈式系統才能完成的功能,包括對數據的事務處理,這也須要對一致性提出更高的要求。

  3. 三態

    "三態"既網絡請求成功,失敗或者超時。傳統的服務中調用一個方法會獲得一個明確的答案,可是分佈式系統中因爲網絡的不可靠就沒法及時的作出響應,致使出現了超時的現象,主要的有一下兩種狀況。

    1. 網絡緣由消息沒有發到接收方,發起的過程就消息丟失了
     
     2. 該消息成功的被接收方接收後,並進行了處理,可是在響應反饋的給發送方的過程當中,發生了消息的丟失
    複製代碼
  4. 節點故障

    節點故障時分佈式環境下另外一個比較常見的問題,指的是組成分佈式系統的服務器節點出現宕機或者"僵死"現象,每一個節點均可能會出現這種狀況.

ACID到CAP/BASE

事務具有了四大特徵,分別是原子性(Atomicity),一致性(Consistency),隔離性(Isolation)和持久性(Duability)。

原子性

事務的原子性是指事務必須是一個院子的操做序列單元。事務中包含了各項操做在一次執行過程當中的,只容許出現如下兩個狀態:1.所有成功執行2.所有不執行。
複製代碼

一致性

事務的執行是指事務執行不能破壞數據庫的完整性和一致性,一個事務在執行以前和以後,數據必須從一個狀態到另外一個狀態,所以數據庫當數據庫包含成功事務提交的結果是,就是數據庫處於一致性狀態。
複製代碼

隔離性

事務的隔離性是指併發環境中,併發的事務是相互隔離的,一個事務的執行不能被其餘事務干擾。標準的SQL規範中定義了4種事務隔離級別,不一樣的隔離界別對事務的處理不一樣,

1. 讀未提交(Read Uncommitted)

該隔離級別容許髒讀,隔離級別是最低。該級別的隔離是一個事務正在處理某些數據,而且對數據進行了操做可是尚未對該事務進行提交,而與此同時,另外事務可以訪問這些數據。


2.讀已提交(Read Committed)

和讀爲提交類似,惟一的區別是隻容許獲取已經被提交的數據。

3. 可重複讀

可重複讀取(Repeatable Read),簡單的說,就是保證事務處理過程當中,屢次讀取同一個數據的時候,其值都和事務開始時刻是一致的,該事務禁止了不可重複讀和髒讀。


4. 串行化

串行化(Serializable)是最嚴格的事務隔離級別。要求全部的事務都被串行執行,即事務只能一個接一個的進行處理,不能併發執行。
複製代碼

持久性

事務的持久性也被成爲永久性,是指一個事務一旦提交,它對數據庫中對應數據的狀態的變動就應該是永久性的,換句話說。一旦某個事務成功結束,那麼它對數據庫所作的變動就要永久保存下來的,即便系統發生了奔潰或者宕機,只要可以重啓,那麼就能夠恢復到事務成功結束時的狀態.

分佈式事務

CAP和BASE理論

對於本地事務處理或者集中式的事務處理系統,ACID模型時能夠保證數據的嚴格一致性。可是在分佈式的系統中隨着分佈式事務的出現,傳統的淡季事務模型很難勝任。此時,CA和BASE這樣的分佈式定理就孕育而生了。

CAP定理

CAP的定理告訴咱們一個分佈式系統不可能同時知足一致性(C:Consistency),可用性(A:Availability)和分區容錯性(P:Part tolerance)這三個基本需求,最多隻能知足其中的兩項。

一致性

在分佈式環境中,一致性時指數據在多個副本之間是否保持一直的特性。在一致性的需求下,當一個系統在數據一致性的狀態下執行更新操做後,應該保證系統的數據仍然時一直的狀態。

可用性

可用性是指系統提供的服務必須一直處於可用的狀態,對於每一個操做請求老是可以有限的時間內返回結果。

分區容錯性

分佈式系統遇到任何網絡的分區故障的時候,仍然須要可以保證對外提供知足一致性和可用性的服務,除非整個網絡環境都發生了故障。

BASE理論

BASE是Basically Available(基本可用),Soft state(軟件狀態)和Eventually consistent(最終一致性)三個短語的簡寫,是由來自eBay的架構師的Dan Pritchett在其文章的BASE:An Acid Alternative 中首次明確剔除的。BASE是對CAP中的一致性的可用性權衡的結果,器來源於對大規模互聯網系統的分佈式時間的總結,是基於CAP定理逐步演化而來的,其核心思想是即便沒法作到強一直性,可是每一個英語均可以根據自身的業務特色,採用適當的方式是系統達到最終一致性。

基本可用

基本可用性是指分佈式你係統在出現不可預知的故障的時候,容許損失部分可用性,可是不等價於不可用。

  • 響應時間上的損失:通常一個搜索須要在0.5s以內返回給用戶相應的結果,可是出現故障,查詢時間增長到1-2s。
  • 功能上的損失:正常的狀況下,爲了系統的穩定運行,部分用戶會被引導到一個降級的頁面。

弱狀一致性

最終一致性強調的是系統中全部的數據副本,在通過一段時間的同步知乎,最終達到一個一直的狀態。所以,最終一直性的本質是須要系統保證最終數據可以達到一致,而不須要實時保證系統數據的強一致。

相關文章
相關標籤/搜索