成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

分布式事務兩階段提交VS三階段提交?

開發 前端
在分布式事務中,通常使用兩階段或三階段提交協議來保障分布式事務的正常執行。兩階段協議包含準備階段和提交階段,然而它存在同步阻塞問題、單點故障和數據一致性問題。而三階段協議可以看作是兩階段協議的改進版,它將兩階段的準備階段一分為二,多了一個詢問階段,保證了提交階段之前各參與節點的狀態是一致的,同時引入了超時機制,減少了同步阻塞問題發生的幾率。

在分布式事務中,通常使用兩階段協議或三階段協議來保障分布式事務的正常運行,它也是 X/Open 公司定義的一套分布式事務標準。

X/Open 公司是由多家國際計算機廠商所組成的聯盟組織,它建立之初是為了向 UNIX 環境提供標準。

分布式事務是指在分布式系統中,多個節點之間進行的事務操作。比如在分布式系統中,用戶在下單時,需要同時創建訂單信息和減庫存的操作,然而創建訂單信息和減庫存是分布在不同服務器和不同數據。

庫中的,如下圖所示:

此時我們就需要一個分布式事務介入,保證所有操作,要么一起提交,要么一起回滾。

1、兩階段提交

兩階段提交(Two-Phase Commit,簡稱 2PC)是一種分布式事務協議,確保所有參與者在提交或回滾事務時都處于一致的狀態。2PC 協議包含以下兩個階段:

  1. 準備階段(prepare phase):在這個階段,事務協調者(Transaction Coordinator)向所有參與者(Transaction Participant)發出準備請求,詢問它們是否準備好提交事務。參與者執行所有必要的操作,并回復協調者是否準備好提交事務。如果所有參與者都回復準備好提交事務,協調者將進入下一個階段。如果任何參與者不能準備好提交事務,協調者將通知所有參與者回滾事務。
  2. 提交階段(commit phase):在這個階段,如果所有參與者都已準備好提交事務,則協調者向所有參與者發送提交請求。參與者執行所有必要的操作,并將其結果記錄在持久性存儲中。一旦所有參與者都已提交事務,協調者將向它們發送確認請求。如果任何參與者未能提交事務,則協調者將通知所有參與者回滾事務。

2PC 協議可以確保分布式事務的原子性和一致性,但是其效率較低,可能會出現阻塞等問題。因此,在實際應用中,可以使用其他分布式事務協議,如 3PC(Three-Phase Commit)或 Paxos 協議來代替。

兩階段提交問題

兩階段提交存在以下幾個問題:

  1. 同步阻塞問題:執行過程中,所有參與節點都是事務阻塞型的。當參與者占有公共資源時,其他第三方節點訪問公共資源不得不處于阻塞狀態。也就是說從投票階段到提交階段完成這段時間,資源是被鎖住的。
  2. 單點故障:由于協調者的重要性,一旦協調者發生故障。參與者會一直阻塞下去。尤其在第二階段,協調者發生故障,那么所有的參與者還都處于鎖定事務資源的狀態中,而無法繼續完成事務操作。
  3. 數據不一致問題:在 2PC 最后提交階段中,當協調者向參與者發送 commit 請求之后,發生了局部網絡異?;蛘咴诎l送 commit 請求過程中協調者發生了故障,這會導致只有一部分參與者接受到了 commit 請求。而在這部分參與者接到 commit 請求之后就會執行 commit 操作。但是其他部分未接到 commit 請求的機器則無法執行事務提交,于是整個分布式系統便出現了數據不一致性的現象。

2、三階段提交

三階段提交(Three-Phase Commit,簡稱3PC)是在 2PC 協議的基礎上添加了一個額外的階段來解決 2PC 協議可能出現的阻塞問題。3PC 協議包含三個階段:

  1. CanCommit 階段(詢問階段):在這個階段,事務協調者(Transaction Coordinator)向所有參與者(Transaction Participant)發出 CanCommit 請求,詢問它們是否準備好提交事務。參與者執行所有必要的操作,并回復協調者它們是否可以提交事務。
  2. PreCommit 階段(準備階段):如果所有參與者都回復可以提交事務,則協調者將向所有參與者發送PreCommit 請求,通知它們準備提交事務。參與者執行所有必要的操作,并回復協調者它們是否已經準備好提交事務。
  3. DoCommit 階段(提交階段):如果所有參與者都已經準備好提交事務,則協調者將向所有參與者發送DoCommit 請求,通知它們提交事務。參與者執行所有必要的操作,并將其結果記錄在持久性存儲中。一旦所有參與者都已提交事務,協調者將向它們發送確認請求。如果任何參與者未能提交事務,則協調者將通知所有參與者回滾事務。

與 2PC 協議相比,3PC 協議將 CanCommit 階段(詢問階段)添加到協議中,使參與者能夠在 CanCommit 階段發現并解決可能導致阻塞的問題。這樣,3PC 協議能夠更快地執行提交或回滾事務,并減少不必要的等待時間。需要注意的是,與 2PC 協議相比,3PC 協議仍然可能存在阻塞的問題。

3、兩階段提交 VS 三階段提交

2PC 和 3PC 是分布式事務中兩種常見的協議,3PC 可以看作是 2PC 協議的改進版本,相比于 2PC 它有兩點改進:

  1. 引入了超時機制,同時在協調者和參與者中都引入超時機制(2PC 只有協調者有超時機制);
  2. 3PC 相比于 2PC 增加了 CanCommit 階段,可以盡早的發現問題,從而避免了后續的阻塞和無效操作。

也就是說,3PC 相比于 2PC,因為引入了超時機制,所以發生阻塞的幾率變小了;同時 3PC 把之前 2PC 的準備階段一分為二,變成了兩步,這樣就多了一個緩沖階段,保證了在最后提交階段之前各參與節點的狀態是一致的。

4、數據一致性問題和解決方案

3PC 雖然可以減少同步阻塞問題和單點故障問題,但依然存在數據一致性問題(概率很?。?,而解決數據一致性問題的方案有很多,比如 Paxos 算法或柔性事物機制等。

(1)Paxos 算法

Paxos 算法是一種基于消息傳遞的分布式一致性算法,并在 2013 年獲得了圖靈獎。圖靈獎(ACM A.M. Turing Award)是計算機科學領域最高榮譽之一,由美國計算機協會(ACM)于 1966 年設立,每年頒發一次,表彰對計算機科學領域做出杰出貢獻的人士或團體。簡單來說,Paxos 算法是一種分布式共識算法,用于在分布式系統中實現數據的一致性和共識,保證分布式系統中不同節點之間的數據同步和一致性。Paxos 算法由三個角色組成:提議者、接受者和學習者。當一個節點需要發起一個提議時,它會向其他節點發送一個提議,接受者會接收到這個提議,并對其進行處理,可能會拒絕提議,也可能會接受提議。如果有足夠多的節點接受了該提議,那么提議就會被確定下來,并且通知給所有學習者,最終所有節點都會達成共識。Paxos 算法看起來很簡單,但它實際上是非常的復雜。Paxos 算法應用的產品也很多,比如以下幾個:

  • Redis:Redis 是一個內存數據庫,使用 Paxos 算法實現了分布式鎖服務和主從復制等功能。
  • MySQL:MySQL 5.7 推出的用來取代傳統的主從復制的 MySQL Group Replication 等。
  • ZooKeeper:ZooKeeper 是一個分布式協調服務,使用 Paxos 算法實現了分布式鎖服務和數據一致性等功能。
  • Apache Cassandra:Cassandra 是一個分布式數據庫系統,使用 Paxos 算法實現了數據的一致性和復制等功能。
  • Google Chubby:Chubby 是 Google 內部使用的分布式鎖服務,使用 Paxos 算法實現了分布式鎖服務和命名服務等功能。

(2)柔性事務

柔性事務機制:允許一定時間內不同節點的數據不一致,但要求最終一致的機制。柔性事物有 TCC 補償事物、可靠消息事物(MQ 事物)等。

小結

在分布式事務中,通常使用兩階段或三階段提交協議來保障分布式事務的正常執行。兩階段協議包含準備階段和提交階段,然而它存在同步阻塞問題、單點故障和數據一致性問題。而三階段協議可以看作是兩階段協議的改進版,它將兩階段的準備階段一分為二,多了一個詢問階段,保證了提交階段之前各參與節點的狀態是一致的,同時引入了超時機制,減少了同步阻塞問題發生的幾率。但 2PC 和 3PC 都存在數據一致性問題,此時可以采用 Paxos 算法或柔性事務機制等方案來解決事務一致性問題。

參考 & 鳴謝

https://pdai.tech/md/arch/arch-z-transection.html.

責任編輯:姜華 來源: Java面試真題解析
相關推薦

2025-06-10 08:02:15

2023-12-05 09:33:08

分布式事務

2018-10-29 08:44:29

分布式兩階段提交事務

2024-01-26 08:18:03

2024-03-26 16:24:46

分布式事務2PC3PC

2025-05-16 07:46:11

分布式事務服務

2024-05-21 14:12:07

2022-03-28 10:44:51

MySQL日志存儲

2022-12-21 19:04:35

InnoDBMySQL

2025-06-19 08:03:03

2010-04-22 15:11:14

2022-07-27 08:52:10

MySQL二階段提交

2023-11-29 07:47:58

DDIA兩階段提交

2024-12-06 07:10:00

2023-10-24 08:25:20

TCC模式事務

2023-01-18 10:35:49

MySQL數據庫

2021-03-17 00:05:50

分布式事務提交

2017-08-30 18:15:54

MySql

2024-07-22 08:57:58

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久激情 | 自拍偷拍一区二区三区 | 色综合一区二区三区 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 国产精品高潮呻吟久久aⅴ码 | 日日日操 | 日本字幕在线观看 | 成人在线中文字幕 | 国内精品一区二区三区 | 精品国产一区二区三区观看不卡 | 欧美一级电影免费观看 | 日韩av免费在线电影 | 久久国内精品 | 51ⅴ精品国产91久久久久久 | 国产精品成人av | 久久久国产一区 | 97精品国产97久久久久久免费 | 欧美婷婷 | 亚洲午夜av久久乱码 | 久久久av| 伊人二区| 麻豆av在线免费观看 | 黄色免费在线观看 | 久久精品—区二区三区 | 国产男女视频网站 | av中文字幕在线播放 | 一级黄色在线 | 日韩精品久久久久 | 色综合一区二区 | 亚洲精品欧美精品 | 午夜理伦三级理论三级在线观看 | 人操人人| 中文字幕免费 | 亚洲综合首页 | 91www在线观看 | 一区二区三区在线 | 九九热最新视频 | av手机免费在线观看 | 中文字幕一区二区三区四区五区 | 精品三级在线观看 | 一级特黄网站 |