国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

5種分布式事務解決方案優缺點對比

開發 架構 分布式
分布式事務是企業集成中的一個技術難點,也是每一個分布式系統架構中都會涉及到的一個東西,特別是在微服務架構中,幾乎可以說是無法避免。

背景

分布式事務是企業集成中的一個技術難點,也是每一個分布式系統架構中都會涉及到的一個東西,特別是在微服務架構中,幾乎可以說是無法避免。

ACID

指數據庫事務正確執行的四個基本要素:

  1. 原子性(Atomicity)
  2. 一致性(Consistency)
  3. 隔離性(Isolation)
  4. 持久性(Durability)

CAP

CAP原則又稱CAP定理,指的是在一個分布式系統中,一致性(Consistency)、可用性(Availability)、分區容忍性(Partition tolerance)。CAP 原則指的是,這三個要素最多只能同時實現兩點,不可能三者兼顧。

  • 一致性:在分布式系統中的所有數據備份,在同一時刻是否同樣的值。
  • 可用性:在集群中一部分節點故障后,集群整體是否還能響應客戶端的讀寫請求。
  • 分區容忍性:以實際效果而言,分區相當于對通信的時限要求。系統如果不能在時限內達成數據一致性,就意味著發生了分區的情況,必須就當前操作在C和A之間做出選擇。

BASE理論

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

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

解決方案

01 兩階段提交(2PC)

兩階段提交2PC是分布式事務中最強大的事務類型之一,兩段提交就是分兩個階段提交,第一階段詢問各個事務數據源是否準備好,第二階段才真正將數據提交給事務數據源。

為了保證該事務可以滿足ACID,就要引入一個協調者(Cooradinator)。其他的節點被稱為參與者(Participant)。協調者負責調度參與者的行為,并最終決定這些參與者是否要把事務進行提交。處理流程如下:

5種分布式事務解決方案優缺點對比

 

階段一

a) 協調者向所有參與者發送事務內容,詢問是否可以提交事務,并等待答復。

b) 各參與者執行事務操作,將 undo 和 redo 信息記入事務日志中(但不提交事務)。

c) 如參與者執行成功,給協調者反饋 yes,否則反饋 no。

階段二

如果協調者收到了參與者的失敗消息或者超時,直接給每個參與者發送回滾(rollback)消息;否則,發送提交(commit)消息。兩種情況處理如下:

情況1:當所有參與者均反饋 yes,提交事務

a) 協調者向所有參與者發出正式提交事務的請求(即 commit 請求)。

b) 參與者執行 commit 請求,并釋放整個事務期間占用的資源。

c) 各參與者向協調者反饋 ack(應答)完成的消息。

d) 協調者收到所有參與者反饋的 ack 消息后,即完成事務提交。

情況2:當有一個參與者反饋 no,回滾事務

a) 協調者向所有參與者發出回滾請求(即 rollback 請求)。

b) 參與者使用階段 1 中的 undo 信息執行回滾操作,并釋放整個事務期間占用的資源。

c) 各參與者向協調者反饋 ack 完成的消息。

d) 協調者收到所有參與者反饋的 ack 消息后,即完成事務。

問題

1) 性能問題:所有參與者在事務提交階段處于同步阻塞狀態,占用系統資源,容易導致性能瓶頸。

2) 可靠性問題:如果協調者存在單點故障問題,或出現故障,提供者將一直處于鎖定狀態。

3) 數據一致性問題:在階段 2 中,如果出現協調者和參與者都掛了的情況,有可能導致數據不一致。

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

缺點:實現復雜,犧牲了可用性,對性能影響較大,不適合高并發高性能場景。

02 三階段提交(3PC)

三階段提交是在二階段提交上的改進版本,3PC最關鍵要解決的就是協調者和參與者同時掛掉的問題,所以3PC把2PC的準備階段再次一分為二,這樣三階段提交。處理流程如下:

5種分布式事務解決方案優缺點對比

 

階段一

a) 協調者向所有參與者發出包含事務內容的 canCommit 請求,詢問是否可以提交事務,并等待所有參與者答復。

b) 參與者收到 canCommit 請求后,如果認為可以執行事務操作,則反饋 yes 并進入預備狀態,否則反饋 no。

階段二

協調者根據參與者響應情況,有以下兩種可能。

情況1:所有參與者均反饋 yes,協調者預執行事務

a) 協調者向所有參與者發出 preCommit 請求,進入準備階段。

b) 參與者收到 preCommit 請求后,執行事務操作,將 undo 和 redo 信息記入事務日志中(但不提交事務)。

c) 各參與者向協調者反饋 ack 響應或 no 響應,并等待最終指令。

情況2:只要有一個參與者反饋 no,或者等待超時后協調者尚無法收到所有提供者的反饋,即中斷事務

a) 協調者向所有參與者發出 abort 請求。

b) 無論收到協調者發出的 abort 請求,或者在等待協調者請求過程中出現超時,參與者均會中斷事務。

階段三

該階段進行真正的事務提交,也可以分為以下兩種情況。

情況 1:所有參與者均反饋 ack 響應,執行真正的事務提交

a) 如果協調者處于工作狀態,則向所有參與者發出 do Commit 請求。

b) 參與者收到 do Commit 請求后,會正式執行事務提交,并釋放整個事務期間占用的資源。

c) 各參與者向協調者反饋 ack 完成的消息。

d) 協調者收到所有參與者反饋的 ack 消息后,即完成事務提交。

情況2:只要有一個參與者反饋 no,或者等待超時后協調組尚無法收到所有提供者的反饋,即回滾事務。

a) 如果協調者處于工作狀態,向所有參與者發出 rollback 請求。

b) 參與者使用階段 1 中的 undo 信息執行回滾操作,并釋放整個事務期間占用的資源。

c) 各參與者向協調組反饋 ack 完成的消息。

d) 協調組收到所有參與者反饋的 ack 消息后,即完成事務回滾。

優點:相比二階段提交,三階段提交降低了阻塞范圍,在等待超時后協調者或參與者會中斷事務。避免了協調者單點問題。階段 3 中協調者出現問題時,參與者會繼續提交事務。

缺點:數據不一致問題依然存在,當在參與者收到 preCommit 請求后等待 do commite 指令時,此時如果協調者請求中斷事務,而協調者無法與參與者正常通信,會導致參與者繼續提交事務,造成數據不一致。

03 補償事務(TCC)

TCC 是服務化的二階段編程模型,采用的補償機制:

5種分布式事務解決方案優缺點對比

 

條件:

需要實現確認和補償邏輯

需要支持冪等

處理流程:

a) Try 階段主要是對業務系統做檢測及資源預留。

這個階段主要完成:

完成所有業務檢查( 一致性 ) 。

預留必須業務資源( 準隔離性 ) 。

Try 嘗試執行業務。

b) Confirm 階段主要是對業務系統做確認提交。

Try階段執行成功并開始執行 Confirm階段時,默認 Confirm階段是不會出錯的。即:只要Try成功,Confirm一定成功。

c) Cancel 階段主要是在業務執行錯誤,需要回滾的狀態下執行的業務取消,預留資源釋放。

優點:

性能提升:具體業務來實現控制資源鎖的粒度變小,不會鎖定整個資源。

數據最終一致性:基于 Confirm 和 Cancel 的冪等性,保證事務最終完成確認或者取消,保證數據的一致性。

可靠性:解決了 XA 協議的協調者單點故障問題,由主業務方發起并控制整個業務活動,業務活動管理器也變成多點,引入集群。

缺點:TCC 的 Try、Confirm 和 Cancel 操作功能要按具體業務來實現,業務耦合度較高,提高了開發成本。

04 本地消息表(消息隊列)

其核心思想是將分布式事務拆分成本地事務進行處理。

方案通過在消費者額外新建事務消息表,消費者處理業務和記錄事務消息在本地事務中完成,輪詢事務消息表的數據發送事務消息,提供者基于消息中間件消費事務消息表中的事務。

5種分布式事務解決方案優缺點對比

 

條件:

服務消費者需要創建一張消息表,用來記錄消息狀態。

服務消費者和提供者需要支持冪等。

需要補償邏輯。

每個節點上起定時線程,檢查未處理完成或發出失敗的消息,重新發出消息,即重試機制和冪等性機制。

處理流程:

1. 服務消費者把業務數據和消息一同提交,發起事務。

2. 消息經過MQ發送到服務提供方,服務消費者等待處理結果。

3. 服務提供方接收消息,完成業務邏輯并通知消費者已處理的消息。

容錯處理情況如下:

當步驟1處理出錯,事務回滾,相當于什么都沒有發生。

當步驟2、3處理出錯,由于消息保存在消費者表中,可以重新發送到MQ進行重試。

如果步驟3處理出錯,且是業務上的失敗,服務提供者發送消息通知消費者事務失敗,且此時變為消費者發起回滾事務進行回滾邏輯。

優點:從應用設計開發的角度實現了消息數據的可靠性,消息數據的可靠性不依賴于消息中間件,弱化了對 MQ 中間件特性的依賴。

缺點:與具體的業務場景綁定,耦合性強,不可公用。消息數據與業務數據同庫,占用業務系統資源。業務系統在使用關系型數據庫的情況下,消息服務性能會受到關系型數據庫并發性能的局限。

MQ事務消息(最終一致性)

支持事務消息的MQ,其支持事務消息的方式采用類似于二階段提交。

基于 MQ 的分布式事務方案其實是對本地消息表的封裝,將本地消息表基于 MQ 內部,其他方面的協議基本與本地消息表一致。

5種分布式事務解決方案優缺點對比

 

條件:

a) 需要補償邏輯

b) 業務處理邏輯需要冪等

處理流程:

c) 消費者向MQ發送half消息。

d) MQ Server將消息持久化后,向發送方ack確認消息發送成功。

e) 消費者開始執行事務邏輯。

f) 消費者根據本地事務執行結果向MQ Server提交二次確認或者回滾。

g) MQ Server收到commit狀態則將half消息標記可投遞狀態。

h) 服務提供者收到該消息,執行本地業務邏輯。返回處理結果。

優點:

消息數據獨立存儲,降低業務系統與消息系統之間的耦合。

吞吐量優于本地消息表方案。

缺點:

一次消息發送需要兩次網絡請求(half消息 + commit/rollback)。

需要實現消息回查接口。

05 Sagas事務模型(最終一致性)

Saga模式是一種分布式異步事務,一種最終一致性事務,是一種柔性事務,有兩種不同的方式來實現saga事務,最流行的兩種方式是:

一、 事件/編排Choreography:沒有中央協調器(沒有單點風險)時,每個服務產生并聆聽其他服務的事件,并決定是否應采取行動。

該實現第一個服務執行一個事務,然后發布一個事件。該事件被一個或多個服務進行監聽,這些服務再執行本地事務并發布(或不發布)新的事件,當最后一個服務執行本地事務并且不發布任何事件時,意味著分布式事務結束,或者它發布的事件沒有被任何Saga參與者聽到都意味著事務結束。

5種分布式事務解決方案優缺點對比

 

處理流程:

訂單服務保存新訂單,將狀態設置為pengding掛起狀態,并發布名為ORDER_CREATED_EVENT的事件。

支付服務監聽ORDER_CREATED_EVENT,并公布事件BILLED_ORDER_EVENT。

庫存服務監聽BILLED_ORDER_EVENT,更新庫存,并發布ORDER_PREPARED_EVENT。

貨運服務監聽ORDER_PREPARED_EVENT,然后交付產品。最后,它發布ORDER_DELIVERED_EVENT。

最后,訂單服務偵聽ORDER_DELIVERED_EVENT并設置訂單的狀態為concluded完成。

假設庫存服務在事務過程中失敗了。進行回滾:

庫存服務產生PRODUCT_OUT_OF_STOCK_EVENT

訂購服務和支付服務會監聽到上面庫存服務的這一事件:

①支付服務會退款給客戶。

②訂單服務將訂單狀態設置為失敗。

優點:事件/編排是實現Saga模式的自然方式; 它很簡單,容易理解,不需要太多的努力來構建,所有參與者都是松散耦合的,因為他們彼此之間沒有直接的耦合。如果您的事務涉及2至4個步驟,則可能是非常合適的。

二、 命令/協調orchestrator:中央協調器負責集中處理事件的決策和業務邏輯排序。

saga協調器orchestrator以命令/回復的方式與每項服務進行通信,告訴他們應該執行哪些操作。

5種分布式事務解決方案優缺點對比

 

訂單服務保存pending狀態,并要求訂單Saga協調器(簡稱OSO)開始啟動訂單事務。

OSO向收款服務發送執行收款命令,收款服務回復Payment Executed消息。

OSO向庫存服務發送準備訂單命令,庫存服務將回復OrderPrepared消息。

OSO向貨運服務發送訂單發貨命令,貨運服務將回復Order Delivered消息。

OSO訂單Saga協調器必須事先知道執行“創建訂單”事務所需的流程(通過讀取BPM業務流程XML配置獲得)。如果有任何失敗,它還負責通過向每個參與者發送命令來撤銷之前的操作來協調分布式的回滾。當你有一個中央協調器協調一切時,回滾要容易得多,因為協調器默認是執行正向流程,回滾時只要執行反向流程即可。

優點:

避免服務之間的循環依賴關系,因為saga協調器會調用saga參與者,但參與者不會調用協調器。

集中分布式事務的編排。

只需要執行命令/回復(其實回復消息也是一種事件消息),降低參與者的復雜性。

在添加新步驟時,事務復雜性保持線性,回滾更容易管理。

如果在第一筆交易還沒有執行完,想改變有第二筆事務的目標對象,則可以輕松地將其暫停在協調器上,直到第一筆交易結束。  

責任編輯:龐桂玉 來源: 今日頭條
相關推薦

2025-04-29 04:00:00

分布式事務事務消息

2024-03-26 12:08:53

分布式事務存儲

2020-05-28 09:35:05

分布式事務方案

2023-09-14 15:44:46

分布式事務數據存儲

2020-03-31 16:13:26

分布式事務方案TCC

2025-04-28 00:44:04

2019-01-11 18:22:07

阿里巴巴技術開源

2010-07-21 13:53:41

SQL Server分

2025-05-07 00:10:00

分布式事務TCC模式

2021-06-25 10:35:58

分布式代碼Java

2025-08-27 09:11:48

2021-09-28 09:43:11

微服務架構技術

2024-12-09 09:35:00

2019-09-09 10:09:51

分布式事務 數據庫

2023-11-30 07:19:08

.NET開源

2024-06-13 08:04:23

2020-11-27 07:01:44

分布式事務

2023-03-05 18:23:38

分布式ID節點

2021-06-28 10:03:44

分布式數據庫架構

2025-08-05 08:30:08

點贊
收藏

51CTO技術棧公眾號

亚洲男人都懂第一日本| 在线播放免费| 欧美综合第一页| 亚洲精品在线国产| 视频二区在线| 天天影视综合色| 日本成人免费在线| 精品视频在线免费观看| av男人天堂一区| 婷婷亚洲图片| 美女一区网站| 欧美裸体网站| 久久精品国产99国产精品澳门| 国产精品久99| 韩国自拍一区| 日韩一级精品| 日韩电影免费在线观看| 免费在线观看黄色| 欧美一区二区三区成人久久片| 97人人模人人爽人人少妇| 日韩免费在线播放| 亚洲日本成人网| 国产欧美日韩不卡| 爽好多水快深点欧美视频| 99久久久国产精品免费调教网站 | 欧美 日韩 国产一区| 欧美亚洲综合色| 国产91在线观看丝袜| 欧美影视一区| 自拍视频国产精品| 久久视频在线观看免费| 亚洲精品999| 91国偷自产一区二区使用方法| 日韩成人免费电影| 欧美aⅴ一区二区三区视频| 欧美1区视频| 国产精品99久久免费观看| 高清无码视频直接看| 久久国产一区| 国精产品一区二区| 精品伊人久久大线蕉色首页| 欧美乱大交xxxxx潮喷l头像| 国产素人在线观看| 欧美激情视频免费看| 亚洲欧美电影在线观看| 国产一区二区在线免费播放| 成年免费网站| 伊人国产在线看一| av在线电影观看| 在线观看免费国产小视频| 国产69精品久久久久孕妇| 欧美18一12sex性处hd| 99热在线免费| 你懂的在线观看视频网站| 国产小视频免费在线观看| 日本韩国一区| 在线视频毛片| 国产二级片在线| 国产乱妇乱子| 中文天堂在线观看| 牛牛澡牛牛爽一区二区| 桃子视频成人app| 国内精品免费| 日本不卡电影| 久久99免费视频| 美日韩精品视频| 欧美日韩1区2区| 色综合久久天天| 欧美一区二区福利在线| 91人成网站www| 精品制服美女久久| 国产97免费视| 夜夜嗨av一区二区三区| 国产在线欧美日韩| 国产精品天天看| 一区二区三区中文在线观看| 久久精品国产亚洲精品| 97在线视频免费观看| 东北少妇不带套对白| 91精品国产91久久久久游泳池 | 欧美好骚综合网| 欧美一级做一级爱a做片性| 国产理论在线观看| 飘雪影视在线观看免费观看| 日韩亚洲第一页| 久久精品视频亚洲| 国产精品av在线播放| 91精品国产电影| 91亚洲精华国产精华| 免费国产视频| 欧美成人性网| 欧美成人一品| 激情五月播播久久久精品| www.亚洲人| 一区二区视频在线| 精品久久久久久国产91| 欧美日韩三级一区二区| 精品乱码亚洲一区二区不卡| 亚洲人成在线观看网站高清| 久久久免费在线观看| www.欧美黄色| 亚洲天堂精品在线| 97久久超碰国产精品| 红杏视频成人| 男人天堂手机在线| 中文字幕无码精品亚洲35| 91在线看网站| jizz内谢中国亚洲jizz| 亚洲最新av在线| 欧美国产日本在线| 黄色91av| 国产主播在线看| 精品精品导航| 老司机午夜精品视频在线观看| 中文字幕在线不卡一区| 色噜噜国产精品视频一区二区| 久久99国产精品一区| 国产精品毛片aⅴ一区二区三区| 国产欧美精品一区二区色综合朱莉| 91高清视频免费观看| 蜜桃特黄a∨片免费观看| 亚洲欧美小说色综合小说一区| 综合激情网站| 国产精品高清亚洲| 国产精品高潮粉嫩av| 国产精品无码电影在线观看 | 黄页在线播放| 亚洲精品成人久久久998| 久久久国产成人精品| 欧美精品一区二区三区视频| 亚洲永久免费视频| 成人av电影免费在线播放| 久久性色av| 99久久久久国产精品| 欧美午夜网站| 韩国精品视频在线观看| 99在线视频观看| 污视频在线观看免费| a√免费观看在线网址www| 亚洲黄色网址在线观看| 国产视频不卡| 色综合久久88色综合天天免费| 国产经品一区二区| 欧美日韩视频第一区| 亚洲精品福利视频网站| 欧美久久在线| 免费网站在线观看人| 精品久久久久久中文字幕大豆网| 国产在线一区二区| 亚洲神马久久| 久久久久久久一区二区| 1区2区3区精品视频| 26uuu色噜噜精品一区二区| 国产精品综合一区二区| 老司机久久99久久精品播放免费| 日韩深夜福利| 性做久久久久久| 久久国产精品色| 蜜臀av性久久久久蜜臀aⅴ流畅| 精品视频99| 成人爽a毛片免费啪啪红桃视频| 国产精品高潮久久| 福利网站在线观看| 在线免费观看黄色网址| 九色视频网站| 探花国产精品| 韩国av电影免费观看| www.涩涩涩| 亚洲国产日韩欧美在线观看| 91猫先生在线| 91色国产在线| 免费黄视频网站| 欧美在线一卡| 老司机在线视频二区| 欧美xxxx视频| www.一区| 国产一级成人av| 欧美激情另类| 国产人成精品一区二区三| 日韩高清国产一区在线| 国产一区在线精品| wwwwww.欧美系列| 亚洲久草在线视频| 日本道在线观看一区二区| 日韩欧美一级二级三级久久久| 亚洲福利视频在线| 日韩视频在线观看免费| 国产69精品久久久| 国产精品永久免费在线| 精品伊人久久大线蕉色首页| 黄色免费观看视频网站| 性视频一区二区三区| 欧美日韩在线观看视频小说| 亚洲娇小xxxx欧美娇小| 国产女人在线观看| 亚洲国产成人爱av在线播放| 精品国产一区探花在线观看| 91av福利视频| 国内精品久久久久久久97牛牛| 精品视频第一区|