原文链接:
https://www.gbase.cn/community/post/3861
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。
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)消息。参与者根据协调器的指令执行提交或者回滚操作,并释放事务处理过程中持有的锁资源。
一旦准备阶段执行成功,那么事务提交需要的所有信息都已完成持久化落盘,即使后续提交阶段某个参与者发生错误,该参与者可以从持久化的信息中尝试再次提交,直至提交成功。最终该分布式事务在所有参与者上的状态一定是相同的:要么所有参与者都提交,要么所有参与者都回滚。因此,对应用来说,该事务的状态变化是原子的。
小结
综上所述,GBase 8c通过两阶段提交来实现分布式事务,确保所有跨节点事务的原子性、一致性、隔离性和持久性。两阶段提交可以保证分布式事务要么全部提交成功,要么全部提交失败,不会产生事务在部分节点提交成功,部分节点提交失败的情况。
对于提交成功的分布式事务,GBase 8c确保从任意节点访问都可以获得同样的结果,实现分布式事务的强一致性。
原文链接:
https://www.gbase.cn/community/post/3861
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。