Certification-Based Replication是依靠群组通讯(Group Communication)和全局有序事务(Global Ordering Transaction)来实现同步复制的。
Certification-based Replication实现要求
Transactional Database
数据库需要支持事务,对于未提交的修改能支持回滚操作Atomic Changes
所有数据同步操作都满足原子性,举例来说,对于一组数据同步指令,要么都执行,要么都不执行Global Ordering
所有数据同步指令都有一个全局唯一且递增的编号,也就是说在所有的节点上同步事件都是按照相同的顺序执行的
Certification-based Replication实现原理
- 当一个DML请求到达Server的时候,会按照传统DB的方式执行,直到客户端发送Commit请求,此Server会将所有更新操作和涉及记录的Primary Key归集到一个Write-Set中,然后将此Write-Set发送到集群中的所有Server节点(包括自己)。
- 对于事务发起Server来说,如果校验有冲突,则回滚事务,并返回DeadLock/Conflictd到前端;若果校验没有冲突,则提交事物,并返回OK。
- 对于集群中的其它Server来说,如果校验有冲突,则丢弃此Write-Set;如果校验没有冲突,则(等待)提交事物。
Write-Set冲突校验
冲突校验的前提是全局有序事务(Global Ordering Transaction),集群会为每一个事务分配一个全局唯一且有序的编号,每个节点都会将待处理事务按照此编号排序,此机制可确保所有节点都步调一致。 当一个事务到达Commit阶段的时候,节点会查询出此事务编号和上一次提交成功的事务编号之间的所有事务,检查区间内的所有事务与新事务是否存在主键冲突,存在冲突则校验不通过。