GBase 8c通过两阶段提交来实现分布式事务,确保所有跨节点事务的原子性、一致性、隔离性和持久性。两阶段提交可以保证分布式事务要么全部提交成功,要么全部提交失败,不会产生事务在部分节点提交成功,部分节点提交失败的情况。
对于提交成功的分布式事务,GBase 8c确保从任意节点访问都可以获得同样的结果,实现分布式事务的强一致性。
两阶段提交
两阶段提交(Two-Phase Commit)是一个成熟稳定的强一致性、中心化的原子提交协议。集群节点充当两种角色:CN节点(Coordinator)作为中心化的协调者,DN节点(Datanode)作为N个参与者。两阶段提交分为准备阶段(Prepare phase)和提交阶段(Commit phase)两个阶段。
在准备阶段,协调者向所有参与者发送事务预处理请求,并等待各参与者的响应;各参与者执行本地事务并回复成功或失败。
在提交阶段,当协调者收到所有参与者准备成功的消息,发送commit请求;所有参与者收到commit请求,正式执行本地事务commit操作,回复成功或失败,并在提交完成后释放整个事务执行期间占用的资源。如果任一参与者返回失败或延时,导致协调者收不到部分参与者的回复,则发送rollback请求;所有参与者接收rollback消息,回滚本地事务。