暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8c的两阶段提交

原创 薛定谔的比干 2022-10-28
278

两阶段提交 2PC

GBase 8c采用两阶段提交(2PC)协议以保持分布式事务的原子性,防止出现部分DN提交部分DN回滚的“中间态”情况。
image.png
两阶段提交协议将事务的提交操作分为两个阶段:
1. 准备阶段: 将所有提交操作所需要用到的信息和资源全部写入磁盘,完成持久化;
2. 提交阶段: 根据之前准备好的提交信息和资源,执行提交或回滚操作。

两阶段提交协议之所以能够保证分布式事务原子性的关键在于:一旦准备阶段执行成功,那么提交需要的所有信息都完成持久化写入磁盘,即使后续提交阶段某个DN发生执行错误,该DN也可以再次从持久化的提交信息中尝试提交,直至提交成功。最终该分布式事务在所有DN上的状态一定是相同的,要么所有DN都提交,要么所有DN都回滚。因此,对外来说,该事务的状态变化是原子性的。

image.png

GBase 8c的跨节点的分布式事务是通过GTM的严格的两阶段提交的跨节点的分布式事务。在数据提交的时候,CN先向每个DN节点发送prepare状态,DN节点返回prepare ok状态后,CN再发送commit状态,最后DN节点返回commit ok状态后才算一次提交完成。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论