OceanBase分布式事务的核心机制是基于Paxos协议的2PC(两阶段提交)结合多副本日志复制,确保跨节点数据一致性。在准备阶段,所有参与节点通过Paxos协议达成日志复制共识,记录事务变更;在提交阶段,协调者收集投票后广播决定,所有节点同步应用日志,实现原子提交。跨节点一致性通过全局事务ID和严格序列化隔离级别维护,避免脏读、不可重复读和幻读。
来源1
OceanBase 采用两阶段提交(2PC)协议来实现分布式事务的原子性,其中第一阶段是准备(Prepare)阶段,协调者向所有参与者发送 Prepare 请求,参与者执行事务并将变更写入 redo log,如果成功则投票 Yes,否则 No。第二阶段是提交(Commit)或回滚(Abort)阶段,协调者根据投票结果决定并广播。OceanBase 的创新在于将 2PC 与 Paxos 协议结合,使用 Paxos 来复制 Prepare 投票日志,确保即使协调者故障也能恢复正确状态。
来源2
在 OceanBase 中,跨节点事务通过 Leader-Follower 复制机制保证一致性。事务日志先在 Leader 上生成,通过 Paxos 协议复制到多数 Follower,达到半数以上确认后视为 Prepare 成功。跨库事务引入 Global Transaction Service (GTS),生成全局唯一 TxID,确保序列化执行,避免死锁和丢失更新。数据一致性依赖于多副本日志的持久化和回放。
来源3
OceanBase 的分布式事务支持跨分区、跨 Server 甚至跨 Cluster 的一致性,主要依赖于以下机制:1)全局事务 ID 由 GTS 分配,确保唯一性和顺序性;2)两阶段提交结合 Paxos:在 Prepare 阶段,参与 Observer 使用 Paxos 复制事务日志到多数派;3)在 Commit 阶段,协调者收集 Prepare OK 后,通过 Paxos 提交日志。故障恢复时,通过日志回放重做或回滚未完成事务。
来源4
跨节点数据一致性的关键是 OceanBase 的多 RAFT 组架构,每个分区有独立的 RAFT 组,事务跨越多个组时,协调者(通常是第一个触及的分区的 Leader)负责 2PC。Prepare 阶段每个参与 RAFT 组持久化日志并多数派确认,Commit 阶段持久化 commit log。这种设计确保了即使网络分区或节点故障,也能通过多数派日志恢复一致视图。
来源5
OceanBase 实现了严格串行化(Serializable)隔离级别,防止跨节点幻读。通过谓词锁(Predicate Lock)和快照读结合 MVCC,避免并发事务干扰。分布式事务的 XA 兼容接口允许与外部系统集成,一致性由 TM(事务管理器)和 RM(资源管理器)协作维护,内部使用弱 XA 协议优化性能。
来源6
在实际案例中,OceanBase 处理跨 DC 事务时,使用 3DC 部署确保多数派跨地域,通过异步同步日志复制结合 2PC,延迟在毫秒级。数据一致性验证通过全量备份和 binlog 回放测试,一致性校验工具可扫描全表 diff 数据。
FAQ
Q: OceanBase 如何处理分布式事务死锁?
A: 通过全局事务 ID 的时间戳排序和等待图检测,协调者主动回滚低优先级事务。
Q: 跨节点事务性能如何优化?
A: 使用读写分离、批量提交和弱一致读,减少 Paxos 轮次。
Q: 故障时如何保证一致性?
A: Paxos 多数派日志持久化,Leader 切换后日志回放重构状态。
Q: 支持哪些隔离级别?
A: RC、RR、Serializable,全支持 ACID 特性。