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

OceanBase系统架构分布式事务概述及两阶段提交

2024-01-30
438

OceanBase 数据库的事务类型由事务涉及的日志流数量来决定,主要分为分布式事务和单日志流事务。

  • 分布式事务:事务涉及的日志流数量大于一个。

  • 单日志流事务:事务涉及的日志流数量只有一个。

分布式事务满足事务的所有属性,同样需要满足 ACID 的特性。在多机数据修改,且要保证原子性的场景,分布式事务能够发挥重要作用。

OceanBase 数据库实现了原生的两阶段提交协议,保证分布式事务的原子性。

两阶段提交协议中包含两种角色,协调者(Coordinator)和参与者(Participant)。协调者负责整个协议的推进,使得多个参与者最终达到一致的决议。参与者响应协调者的请求,根据协调者的请求完成 prepare 操作及 commit/abort 操作。

分布式事务提交流程

传统和 OceanBase 数据库两阶段提交的流程如下图所示。

两阶段

PREPARE 阶段

协调者:协调者向所有的参与者发起 prepare request

参与者:参与者收到 prepare request 之后,决定是否可以提交,如果可以则持久化 prepare log 并且向协调者返回 prepare 成功,否则返回 prepare 失败。

COMMIT阶段

协调者:协调者收齐所有参与者的 prepare ack 之后,进入 COMMIT 状态,向用户返回事务 commit 成功,然后向所有参与者发送事务 commit request。

参与者:参与者收到 commit request 之后释放资源解行锁,然后提交 commit log,日志持久化完成之后给协调者回复 commit ok 消息,最后释放事务上下文并退出。

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

评论