分佈式系統中,藉助「消息通知」實現最終一致性方案

分佈式系統中,藉助「消息通知」實現最終一致性方案

分佈式事務中的CAP理論


Eric Brewer提出,CAP理論在分佈式狀況下無法做到同時滿足。

Consistency:集群中所有的分佈式節點,就同一份數據來說,副本均相同,也就是數據一致。

Availability:對數據的更新和讀寫操作,具具備高可用性,即服務不能出現無響應或者出錯的情況。

Partition Tolerance:分區的容忍性,這裡的分區不是指數據分佈式存儲中的shard分區,而是指由於網絡問題等原因導致節點之間無法正常通訊,最終導致分佈式節點之間沒有聯繫,成為獨立分區。在出現獨立的故障分區後,整個系統還有能力對外提供正常的服務,這種情況就被稱為分區容忍性。

分佈式系統中,藉助「消息通知」實現最終一致性方案

假設一個分佈式系統中,存在兩個節點,處於分區狀態。若允許分區中其他節點來更新數據,那麼會喪失一致性 C 。如果要保證一致性 C ,那處於分區狀態的節點將不允許提供對外服務,這樣又會喪失了可用性 A 。如果一定要保證 CA ,必須保證節點之間能夠互相通信,那分區容忍性就無法保證,就又失去了 P。

Eric Brewer提出,在分佈式環境下,一個系統只能同時滿足其中兩點特性,同時滿足CAP是無法做到的。在大多數的分佈式系統設計中,人們多會選擇滿足 AP 兩點特性。而放棄強一致性,轉而追求最終一致性。

有句英文描述就是: Basically Available, Soft-state, Eventually consistent ,所以簡稱就是 BASE。

分佈式系統中,藉助「消息通知」實現最終一致性方案

最終一致性方案的解決方案有很多,比如paxos,raft,TCC以及消息通知,本文下面介紹一下消息通知方案。

藉助消息通知實現最終一致性方案


藉助消息通知,可以協調具體事務涉及到的多個分佈式服務,最終完成業務場景邏輯。

消息通知方案也有細分:

  1. 藉助Kafka使用本地事務:分佈式服務系統有一個共用的消息表,通過它來協調監控服務雙方的業務執行狀況,最終異步確保。

分佈式系統中,藉助「消息通知」實現最終一致性方案

  1. 藉助MQ消息事務模式:具體實現由兩種方式,如圖所示。


分佈式系統中,藉助「消息通知」實現最終一致性方案

方式一

分佈式系統中,藉助「消息通知」實現最終一致性方案

方式二


分享到:


相關文章: