天天看點

分布式事務一、分布式事務二、分布式事務解決方案

一、分布式事務

1.1 什麼是分布式事務

1.2 CAP定理

CAP 定理,又被叫作布魯爾定理。對于設計分布式系統(不僅僅是分布式事務)的架構師來說,CAP 就是你的入門理論。

  • Consistency(一緻性)

對某個指定的用戶端來說,讀操作能傳回最新的寫操作。

對于資料分布在不同節點上的資料來說,如果在某個節點更新了資料,那麼在其他節點如果都能讀取到這個最新的資料,那麼就稱為強一緻,如果有某個節點沒有讀取到,那就是分布式不一緻。

  • Availability(可用性)
    • 保證服務一定是可用,即收到使用者請求,無論資料是否是正确的版本,服務是能響應資料的
    • 不允許出現響應逾時或響應錯誤

如何實作的?

1、寫入主資料後要将資料同步到從資料庫。

2、由于要保證可用性、不可講從資料庫中的資源進行鎖定

3、即使資料還沒有同步過來,從資料庫也要傳回資料,哪怕數舊資料,也要傳回。即使沒有舊資料也要按照約定傳回一個預設的資訊(類似于熔斷),但不能傳回錯誤或響應逾時

  • Partition tolerance(分區容錯性)
    • 當出現網絡分區後(各個服務不在同一個子網),系統能夠繼續工作。
    • 比如叢集有多台機器,有台機器網絡出現了問題,但是這個叢集仍然可以正常工作。

如何實作?

1、盡量使用一步的方式取代同步,這樣節點之間能有效實作松耦合

2、添加從資料庫節點,其中一個節點挂掉從其他節點擷取資料。

三者不能共有,如果感興趣可以搜尋 CAP 的證明,在分布式系統中,網絡無法 100% 可靠,分區其實是一個必然現象。

如果我們選擇了 CA 而放棄了 P,那麼當發生分區現象時,為了保證一緻性,這個時候必須拒絕請求,但是 A 又不允許,是以分布式系統理論上不可能選擇 CA 架構,隻能選擇 CP 或者 AP 架構。

1.3 BASE定理

二、分布式事務解決方案

2.1、 基于XA協定的兩階段送出(2PC)

2.2、補償事務(TCC)3PC