分布式事务
更新时间:2024-11-19 01:25:24
AntDB使用2PC来保证(Two-Phase Commit, 2PC)来实现分布式事务。2PC分两个阶段:第一阶段,协调者询问参与者事务是否可以执行,参与者回复同意(本地执行成功),回复取消(本地执行失败)。第二阶段,协调者根据第一阶段的投票结果进行决策,当且仅当所有的参与者同意提交事务时才能提交,否则回滚。
2PC在AntDB中的实现如下:
(1)CN1从GTM请求并获得,集群全局SnapShot。
(2)CN1从GTM请求并获取,集群全局唯一TransactionID 事务号100。
(3)CN1到DN1上对用户A减去50元。同时到DN2上对B用户加上50元。
(4)CN1分别操作A和B用户的数据成功后,需要提交该事务。两阶段的第一阶段,分别到DN1和DN2 预提交。即prepare Transaction T100。
(5)DN1和DN2都能预提交成功并且返回成功ACK。
(6)CN1本地结束事务号100。
(7)CN1分别到DN1和DN2上进行两阶段的第二阶段,真正的提交T100。
(8)DN1和DN2提交成功并且返回ACK。
如果第5步,任何一个节点返回预提交失败,第6,7 分别需要本地rollback,和两阶段第二阶段rollback prepared T100。通过这样就能实现两个或多个节点,同时成功或同时失败。
问题反馈