標籤:

分散式概覽-ACID-CAP-2PC-3PC

分散式概覽-ACID-CAP-2PC-3PC

ACID是一個事務的四個特徵:

A:Atomic,all or nothing。

C:Consistency,比如A給B轉100塊,需要滿足在動作之前和之後,錢總數不變。即前後一致。

I:Isolation,線程之間獨立。

D:Durability,可持久化。

CAP是資料庫的一個理論,CAP三個原則不可能同時滿足:

C:Consistency,多台機器的數據一致性。

A:Availability,服務可用性,比如你用一個分散式事務從主同步數據到從,這時候服務不可用。

P:Partition-tolerance,分區容忍性,如果多台機器間,產生了分區,比如網路不通,服務是否可容忍。 等同於,【如果多台伺服器有相同的數據,對於分區是可以容忍的】。

CA:單伺服器。

CP:多伺服器,數據強行同步,比如2PC,導致服務短時間不可用。

AP:多伺服器,數據最終一致,比如非同步消息,導致主掛了後,從可能沒有完整數據。

業界方案:

由於每台機器都可能掛,所以排除CA,即數據需要備多份,P必須滿足。從上面可以看出,CP或者AP都有明顯缺點,所以選擇一個折衷的方案:2f+1台伺服器,如果1是主,同步到f台備後就告訴請求方,已經成功。在可用性與一致性方面折衷。

如果備掛了,不用管,直到它自己恢復。

如果主掛了,用Raft等選舉演算法,選舉出新的主。選舉過程中,服務不可用,大概幾百ms。

2PC是分散式事務中的二階段提交:

2pc:2 phase commit。分散式的強一致性。

應用場景:A收到請求,需要從B轉100塊錢給C,他們都在不同的服務上。

類似場景,結婚是事務,神父是協調者,新郎和新娘是參與者:

神父問新娘:你願意嫁給他嗎?新娘說願意。(phase1: request & reply)

神父問新郎:你願意嫁給她嗎?新郎說願意。(phase1: request & reply)

神父對新娘說:那你戴上戒指就算結婚了,新娘戴上了,並回復說戴好了。(phase2: commit & ack)

神父對新郎說:那你戴上戒指就算結婚了,新郎戴上了,並回復說戴好了。(phase2: commit & ack)

對於第一階段,有任意一方失敗,終止結婚。

對與第二階段,

如果神父掛了,用備用的神父頂上。這段時間新郎新娘一直等待。

如果新郎掛了,新郎復活後,可以詢問新郎她是否戴上了戒指,確定整個婚禮狀態。

如果神父在對新郎說完後,自己掛了,然後新郎也掛了。用備用的神父頂上,但是不知道新郎的狀態,不確定新郎是否戴上了戒指,【系統狀態不確定

3pc:

在2pc中間插入了準備階段,【確定整個系統的狀態】,用來解決2pc,協調者和參與者同時掛掉的問題。

加入了超時機制,協調者超時默認回滾,參與者超時默認成功。


推薦閱讀:

PacifiaA讀書筆記
分散式系統的那些事兒(四) - MQ時代的通信
MaxCompute理解數據、運算和用戶的大腦:基於代價的優化器
Alluxio實戰手冊之設置(Configuration)篇
基於IPFS的分散式數據共享系統的研究

TAG:分散式計算 |