RabbitMQ 實現分佈式事務 通俗理解 簡單易學(思想)

一. 什麼是分佈式事務

有兩個服務,一個訂單服務,一個商品服務。當我們下單成功後,訂單服務會調用商品服務的扣庫存方法,如果這時候商品服務出現異常,扣庫存失敗,那就會導致事務的問題,以後有可能出現超賣。所以我們在微服務架構開發的時候,一定要處理好分佈式事務

二. 分佈式事務理論

比較流行的就是BASE,CAP定理

CAP理論:

是由加州大學伯克利分校Eric Brewer教授提出來的,他指出WEB服務無法同時滿足一下3個屬性:

  • 一致性(Consistency) : 客戶端知道一系列的操作都會同時發生(生效)
  • 可用性(Availability) : 每個操作都必須以可預期的響應結束
  • 分區容錯性(Partition tolerance) : 即使出現單個組件無法可用,操作依然可以完成

具體地講在分佈式系統中,在任何數據庫設計中,一個Web應用至多隻能同時支持上面的兩個屬性。顯然,任何橫向擴展策略都要依賴於數據分區。因此,設計人員必須在一致性與可用性之間做出選擇。

BASE理論:

在分佈式系統中,我們往往追求的是可用性,它的重要程序比一致性要高,那麼如何實現高可用性呢? 前人已經給我們提出來了另外一個理論,就是BASE理論,它是用來對CAP定理進行進一步擴充的。BASE理論指的是:

  • Basically Available(基本可用)
  • Soft state(軟狀態)
  • Eventually consistent(最終一致性)

BASE理論是對CAP中的一致性和可用性進行一個權衡的結果,理論的核心思想就是:我們無法做到強一致,但每個應用都可以根據自身的業務特點,採用適當的方式來使系統達到最終一致性(Eventual consistency)

三.RabbitMQ怎麼實現分佈式事務

總所周知 分佈式事務有多種解決方案,例如2CP,TCC,本地消息表等解決方案,今天我們重點來說說RabbitMQ實現分佈式事務的解決方案

RabbitMQ解決分佈式事務原理: 採用最終一致性原理
需要保證以下三要素
1、確認生產者一定要將數據投遞到MQ服務器中(採用MQ消息確認機制)
2、MQ消費者消息能夠正確消費消息,採用手動ACK模式,使用不補償機制(注意重試冪等性問題)
3、如何保證第一個事務先執行,採用補償機制,創建一個補單消費者進行監聽,如果訂單沒有創建成功,進行補單。

 

 

 

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