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
- 當(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)(包括自己)。
- 對于事務(wù)發(fā)起Server來說,如果校驗(yàn)有沖突,則回滾事務(wù),并返回DeadLock/Conflictd到前端;若果校驗(yàn)沒有沖突,則提交事物,并返回OK。
- 對于集群中的其它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)不通過。