PXC之Certification-Based Replication

Certification-Based Replication是依靠群組通訊(Group Communication)和全局有序事務(wù)(Global Ordering Transaction)來實(shí)現(xiàn)同步復(fù)制的。

Certification-based Replication實(shí)現(xiàn)要求

  • Transactional Database
    數(shù)據(jù)庫需要支持事務(wù),對于未提交的修改能支持回滾操作

  • Atomic Changes
    所有數(shù)據(jù)同步操作都滿足原子性,舉例來說,對于一組數(shù)據(jù)同步指令,要么都執(zhí)行,要么都不執(zhí)行

  • Global Ordering
    所有數(shù)據(jù)同步指令都有一個(gè)全局唯一且遞增的編號(hào),也就是說在所有的節(jié)點(diǎn)上同步事件都是按照相同的順序執(zhí)行的

Certification-based Replication實(shí)現(xiàn)原理

feb34ad5ae8496571c1093aecb47788a0a1.jpg.png
  1. 當(dāng)一個(gè)DML請求到達(dá)Server的時(shí)候,會(huì)按照傳統(tǒng)DB的方式執(zhí)行,直到客戶端發(fā)送Commit請求,此Server會(huì)將所有更新操作和涉及記錄的Primary Key歸集到一個(gè)Write-Set中,然后將此Write-Set發(fā)送到集群中的所有Server節(jié)點(diǎn)(包括自己)。
  2. 對于事務(wù)發(fā)起Server來說,如果校驗(yàn)有沖突,則回滾事務(wù),并返回DeadLock/Conflictd到前端;若果校驗(yàn)沒有沖突,則提交事物,并返回OK。
  3. 對于集群中的其它Server來說,如果校驗(yàn)有沖突,則丟棄此Write-Set;如果校驗(yàn)沒有沖突,則(等待)提交事物。

Write-Set沖突校驗(yàn)

沖突校驗(yàn)的前提是全局有序事務(wù)(Global Ordering Transaction),集群會(huì)為每一個(gè)事務(wù)分配一個(gè)全局唯一且有序的編號(hào),每個(gè)節(jié)點(diǎn)都會(huì)將待處理事務(wù)按照此編號(hào)排序,此機(jī)制可確保所有節(jié)點(diǎn)都步調(diào)一致。 當(dāng)一個(gè)事務(wù)到達(dá)Commit階段的時(shí)候,節(jié)點(diǎn)會(huì)查詢出此事務(wù)編號(hào)和上一次提交成功的事務(wù)編號(hào)之間的所有事務(wù),檢查區(qū)間內(nèi)的所有事務(wù)與新事務(wù)是否存在主鍵沖突,存在沖突則校驗(yàn)不通過。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容