揭祕GBase 8c分散式事務處理核心技術之2PC協議

GBASE南大通用發表於2022-04-25

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章