揭祕GBase 8c分散式事務處理核心技術之2PC協議
GBase 8c 通過 2PC 協議,提供分散式系統強一致事務的能力,滿足金融行業的嚴苛要求,同時,對於追求效能的新興業務,也支援可選的最終一致性事務的能力。
分散式事務原子性和兩階段提交協議
為了保證分散式事務的原子性,防止出現部分參與者提交、部分參與者回滾的“中間態”事務, GBase 8c 採用 2PC 協議實現跨節點分散式事務。
所謂 2PC ( Two-Phase Commit )即兩階段提交協議,顧名思義,就是將事務的提交過程分成了兩個階段來進行處理,包括準備階段 P ( Prepare phase )、提交階段 C ( Commit phase )。在分散式事務中,有兩個執行主體,分別是“協調器”和“參與者”,其中“協調器”接受應用的請求,“參與者”執行“協調器”下發的指令,完成資料的持久化操作。在 2PC 協議中,協調器和參與者相互配合,共同實現事務的 ACID 特性。
一、準備階段( prepare phase ),在這個階段,協調器給所有參與者傳送 Prepare 訊息,通知每個參與者將提交操作所需要使用到的資訊和資源全部寫入磁碟,完成持久化,此時事務沒有提交。
二、提交階段( commit phase ),協調器通知參與者,執行提交或回滾操作。如果協調理器在準備階段收到了參與者的執行失敗或者超時訊息,直接給每個參與者傳送回滾 (Rollback) 訊息;否則,傳送提交 (Commit) 訊息。參與者根據協調器的指令執行提交或者回滾操作,並釋放事務處理過程中持有的鎖資源。
一旦準備階段執行成功,那麼事務提交需要的所有資訊都已完成持久化落盤,即使後續提交階段某個參與者發生錯誤,該參與者可以從持久化的資訊中嘗試再次提交,直至提交成功。最終該分散式事務在所有參與者上的狀態一定是相同的:要麼所有參與者都提交,要麼所有參與者都回滾。因此,對應用來說,該事務的狀態變化是原子的。
2PC 事務狀態保持
傳統 2PC 事務在全域性提交階段可能出現失敗,例如協調器當機,這會造成叢集內各節點的提交狀態不一致,破壞事務的原子性,且 2PC 事務持續佔有已申請的鎖,可能造成其它事務因無法獲取鎖而不能繼續執行,嚴重時可能導致整個叢集卡住,因此,需要檢查這類事務的存在,並儘快推進 2PC 的完成(提交或回滾)。
針對上述問題, GBase 8c 優化了 2PC 的執行流程,設計了 2PC 事務狀態保持功能,確保叢集能夠持續提供服務。
如圖中所示,當協調器當機之後,系統會立即檢測到該問題,並自動選出一個健康的協調器,由後者接管故障協調器上所有未完成的 2PC 事務。
新的協調器會收集所有未完成的 2PC 事務,檢查各個 2PC 事務所處階段,並決定每個 2PC 事務應當提交或者回滾,然後傳送相應指令到各個參與者,完成全部 2PC 流程,確保系統不被阻塞。
小結
綜上所述, GBase 8c 通過兩階段提交來實現分散式事務,確保所有跨節點事務的原子性、一致性、隔離性和永續性。兩階段提交可以保證分散式事務要麼全部提交成功,要麼全部提交失敗,不會產生事務在部分節點提交成功,部分節點提交失敗的情況。
對於提交成功的分散式事務, GBase 8c 確保從任意節點訪問都可以獲得同樣的結果,實現分散式事務的強一致性。
關於 GBase 8c
GBase 8c 是一款多模多型的分散式資料庫,支援行存、列存、記憶體等多種儲存模式和單機、主備式、分散式等多種部署形態,能靈活應對 OLTP 、 OLAP 以及極致效能場景。 GBase 8c 具備高效能、高可用、彈性伸縮、高安全性等特性,可以部署在物理機、虛擬機器、容器、私有云和公有云,為關鍵行業核心系統、網際網路業務系統和政企業務系統提供安全、穩定、可靠的資料儲存和管理服務。同時, GBase 8c 產品支援同城雙活、兩地三中心等容災方案,全域性無單點,具備高達 99.999% 的高可用能力;其憑藉全域性鎖管理、事務狀態保持等重要特性,保證在系統出現異常的情況下,具備自愈的能力; GBase 8c 彈性伸縮的能力,可以靈活應對極端場景下的效能需求;其灰度釋出的特性,給應用頻繁上下線提供了保障。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69979120/viewspace-2888602/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分散式理論(三) - 2PC協議分散式協議
- Oracle Gateway for SQL Server時2PC分散式事務異常處理OracleGatewaySQLServer分散式
- 分散式事務處理方案,微服事務處理方案分散式
- Laravel 分散式事務處理Laravel分散式
- 分散式事務故障處理分散式
- 【分散式技術專題】「分散式技術架構」一文帶你釐清分散式事務協議及分散式一致性協議的演算法原理和核心流程機制(Paxos篇)分散式架構協議演算法
- 分散式事務(1)---2PC和3PC理論分散式
- 分散式事務-2PC和3PC分散式
- springcloud分散式事務處理 LCNSpringGCCloud分散式
- Oracle分散式事務典型案例處理Oracle分散式
- 搞懂分散式技術17:淺析分散式事務分散式
- GRIT:eBay基於微服務的分散式事務協議微服務分散式協議
- PHP分散式事務-兩段式提交 2PC(二)PHP分散式
- 分散式一致性協議之2PC和3PC分散式協議
- Spring @Transactional 宣告式事務揭祕Spring
- 評測回顧 | 南大通用分散式事務型資料庫產品GBase 8c分散式資料庫
- 阿里是如何處理分散式事務的阿里分散式
- SQL Server分散式事務處理(MS DTC)SQLServer分散式
- 搞懂分散式技術19:使用RocketMQ事務訊息解決分散式事務分散式MQ
- Spring分散式事務XA事務(兩段提交2PC)實現Spring分散式
- 關於分散式事務、兩階段提交協議、三階提交協議分散式協議
- 搞懂分散式技術3:初探分散式協調服務zookeeper分散式
- 「分散式技術專題」基於Gossip協議的去中心服務分散式Go協議
- 揭祕有狀態服務上 Kubernetes 的核心技術
- ORACLE懸疑分散式事務問題處理Oracle分散式
- SpringCloud Alibaba Seata處理分散式事務SpringGCCloud分散式
- SQL Server分散式事務處理(MS DTC)-續SQLServer分散式
- 分散式系列七: 分散式事務理論分散式
- Taro 技術揭祕之taro-cli
- 請教分散式事務的具體處理:急!!!!分散式
- 分散式事務之事務實現模式與技術(四)分散式模式
- 分散式場景之剛性事務-2PC詳解分散式
- LTE的核心網技術之核心網和基站之間的介面協議協議
- 分散式協議分散式協議
- PHP 微服務之【分散式事務】PHP微服務分散式
- PHP 微服務之 [分散式事務]PHP微服務分散式
- 「分散式技術專題」事務基礎及特性分散式
- Spring的分散式事務實現(JTA+XA/2PC)Spring分散式