关于 OceanBase 分布式事务的两阶段提交(2PC)机制,以下描述正确的是?
A. OceanBase 的分布式事务采用传统 2PC 协议,所有参与者均需要等待协调者发出 commit 指令后才能提交,协调者单点故障会导致整个事务阻塞。
B. 在分布式事务的 Prepare 阶段,所有参与者会将事务的修改持久化到 Clog,并返回 Prepared 状态;一旦全部返回 Prepared,协调者可以直接返回事务提交成功给客户端,无需等待所有参与者真正 Commit。
C. OceanBase 对 2PC 进行了优化,使用 PALF (Paxos-based log replication protocol)协议,协调者与参与者之间通过 Paxos 多数派确认,避免了单点协调者问题。
D. 分布式事务的回滚只需要协调者发出 abort 指令,各参与者立即丢弃本地修改,无需回放 Clog 中的记录。
2 个赞
解析 :
OceanBase 在传统 2PC 基础上引入了基于 Paxos 的日志同步协议(PALF),每个参与者本身就是一个 Paxos 组(多副本)。协调者在等待参与者响应时,实际是等待该参与者所在 Paxos 组的多数派确认。即使协调者节点故障,其他节点也可以利用日志信息恢复协调者状态,从而避免了传统 2PC 的协调者单点问题。
-
A 错误 :传统 2PC 确实存在协调者单点问题,但 OceanBase 通过 PALF 协议(基于 Paxos)实现了协调者的高可用,不会阻塞事务。
-
B 错误 :协调者必须等待所有参与者真正完成 Commit 并持久化 后才能安全返回客户端成功,不能提前返回。这是 ACID 持久性(Durability)的基本要求。
-
C 正确 :
PALF 是 OceanBase 特有的日志同步与高可用协议,融合了 Paxos 与 2PC,解决了分布式事务中协调者单点故障与日志同步的可靠性问题。
-
D 错误 :回滚操作需要回放 Clog 中的补偿记录 (Undo 日志)来还原数据修改,不能简单丢弃。即使事务 abort,已写入 Clog 的数据仍需要清洗,否则会产生垃圾数据。
2 个赞