分布式事務

2021-09-12 21:08:13 字數 1141 閱讀 2717

根據定理,分布式系統只能滿足三項中的兩項而不可能滿足全部三項。

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

client發起乙個開始請求到tc

tc先將訊息寫到本地日誌,之後向所有的si發起訊息。以支付寶轉賬到餘額寶為例,tc給a的prepare訊息是通知支付寶資料庫相應賬目扣款1萬,tc給b的prepare訊息是通知餘額寶資料庫相應賬目增加1w。為什麼在執行任務前需要先寫本地日誌,主要是為了故障後恢復用,本地日誌起到現實生活中憑證 的效果,如果沒有本地日誌(憑證),出問題容易死無對證

si收到訊息後,執行具體本機事務,但不會進行commit,如果成功返回,不成功返回。同理,返回前都應把要返回的訊息寫到日誌裡,當作憑證

tc收集所有執行器返回的訊息,如果所有執行器都返回yes,那麼給所有執行器發生送commit訊息,執行器收到commit後執行本地事務的commit操作;如果有任乙個執行器返回no,那麼給所有執行器傳送abort訊息,執行器收到abort訊息後執行事務abort操作

ps:tc或si把傳送或接收到的訊息先寫到日誌裡,主要是為了故障後恢復用。如某一si從故障中恢復後,先檢查本機的日誌,如果已收到,則提交,如果則回滾。如果是,則再向tc詢問一下,確定下一步。如果什麼都沒有,則很可能在階段si就崩潰了,因此需要回滾

盡量保證了資料的強一致,適合對資料強一致要求很高的關鍵領域。(其實也不能100%保證強一致)

實現複雜,犧牲了可用性,對效能影響較大,不適合高併發高效能場景。

跟2pc比起來,實現以及流程相對簡單了一些,但資料的一致性比2pc也要差一些

缺點還是比較明顯的,在2,3步中都有可能失敗。tcc屬於應用層的一種補償方式,所以需要程式設計師在實現的時候多寫很多補償的**,在一些場景中,一些業務流程可能用tcc不太好定義及處理。

分布式 分布式事務

是資料庫執行過程中的乙個邏輯單位,由乙個有限的資料庫操作序列構成。事務的acid四大特性 原子性 atomicity 事務作為乙個整體被執行。一致性 consistency 從乙個一致的狀態轉換到另乙個一致的狀態。隔離性 isolation 多個事務併發執行時,併發事務之間互相影響的程度。永續性 d...

分布式事務 分布式事務的實現

如果在多個服務中需要對不同的資料庫進行操作。因為不同服務操作的資料庫都不同,所以保證在同乙個事務中完成操作顯然是不科學的。那實現分布式事務的思想 1 方法入口,建立一條日誌記錄,狀態定義為初始狀態,即儲存本條日誌記錄 可以儲存在資料庫中,也可以寫出到本地磁碟檔案 2 可以在非同步執行緒或在定時任務中...

分布式之分布式事務

被人問到分布式事務,之前學rabbitmq 的時候學到過rabbitmq 高階的事務,因為沒有用過,所有沒有回答好。這裡總結一下。1.單機版事務。事務的四大特性 acid a.原子性 b.一致性 c.隔離性 d.永續性 單機事務可以通過設定事務的隔離級別 參見spring 的事務隔離級別 2.分布式...