去分布式事務

2021-08-26 12:53:23 字數 1766 閱讀 4045

分布式事務是指事務的參與者、支援事務的伺服器、資源伺服器以及事務管理器分別位於分布式系統的不同節點之上。為了實現分布式事務,需要使用下面將介紹的兩階段提交協議。

階段一:開始向事務涉及到的全部資源傳送提交前資訊。此時,事務涉及到的資源還有最後一次機會來異常結束事務。如果任意乙個資源決定異常結束事務,則整個事務取消,不會進行資源的更新。否則,事務將正常執行,除非發生災難性的失敗。為了防止會發生災難性的失敗,所有資源的更新都會寫入到日誌中。這些日誌是永久性的,因此,這些日誌會倖免遇難並且在失敗之後可以重新對所有資源進行更新。 

階段二:只在階段一沒有異常結束的時候才會發生。此時,所有能被定位和單獨控制的

資源管理器

都將開始執行真正的資料更新。

在分布式事務兩階段提交協議中,有乙個主事務管理器負責充當分布式事務協調器的角色。事務協調器負責整個事務並使之與網路中的其他事務管理器協同工作。

事實上,有所得必有所失,分布式事務提供的acid保證是以損害系統的可用性、效能與可伸縮性為代價的。 1

、可用性下降:從上面的二階段提交協議可以看出,

只有在參與分布式事務的各個資料庫例項都能夠正常工作的前提下,分布式事務才能夠順利完成,只要有乙個工作不正常,整個事務就不能完成。這樣,系統的可用性就相當於參加分布式事務的各例項的可用性之積,例項越多,可用性下降越明顯。2、

效能和可伸縮性

:首先是事務的總持續時間通常是各例項操作時間之和,因為乙個事務中的各個操作通常是順序執行的,這樣事務的響應時間就會增加很多;其次是一般web應用的事務都不大,單機操作時間也就幾毫秒甚至不到1毫秒,一但涉及到分布式事務,提交時節點間的網路通訊往返過程也為毫秒級別,對事務響應時間的影響也不可忽視。由於事務持續時間延長,事務對相關資源的鎖定時間也相應增加,從而可能嚴重增加了併發衝突,影響到系統吞吐率和可伸縮性。

在高併發的系統中使用分布式事務顯然會遇到效能瓶頸,比如乙個秒殺系統,分布式事物的使用無疑將大大降低系統的反應速度。為了解決這個問題,我們引入最終一致性(

eventually consistent

),即容許一段時間的不一致,不一致的時間視窗根據不同業務確定。

分布式系統中,去除分布式事務的乙個顯而易見的方法是通過某種方式去非同步的執行各個節點的操作,最終保證各個節點的一致性。這裡介紹一種使用操作佇列和訊息狀態來取代分布式事物的方案。

首先我們假設有a、

b兩個分布式節點,我們需要操作完

a的基礎上去操作

b,兩個操作本來是要分布式事務保證的,但是我們允許a、

b存在短時間的不一致性。

我們在a節點加乙個操作佇列,儲存對

b節點的操作;在

b節點增加乙個結果表,儲存操作執行的結果。如下圖

操作完a節點後,將操作

b節點的操作加入到操作佇列中即可完成本次呼叫,由於沒有去操作分布式的

b節點,響應速度提高很多。操作佇列和

a節點儲存同乙個節點,可以通過本地事務的方法保證操作的原子性。之後由另外的執行緒去從操作佇列中取出操作,然後檢查

b節點的結果表判斷操作是否已經成功,沒有成功則去執行操作,更新

b節點資料,同時根據執**況在結果表中寫入結果,如果結果是成功,需要返回

a節點刪除操作佇列中對應的操作。由於寫入結果和刪除操作屬於分布式操作,我們不使用事務,不保證操作一定成功,即使刪除操作失敗了也沒關係,下次操作來了,判斷結果已經成功就不會再執行操作,而是直接返回

a刪除操作,因此對

b節點資料不會進行重複操作。

雖然由於沒有分布式事務的強一致性保證,使用上述方案在系統將短時間內處於不一致狀態。但基於

操作佇列和訊息表,最終可以將系統恢復到一致。

分布式 分布式事務

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

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

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

分布式之分布式事務

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