从 commit 到 commit OK,标准两阶段提交和 OB 两阶段提交,几次日志延迟,几次RPC延迟呢?

有没有大佬解答一下

用户感知的 commit 延迟
标准:4 次日志延迟 + 2 次 RPC 延迟
OB:1 次日志延迟 + 2 次 RPC 延迟

1 个赞

传统2阶段4次日志延迟, 1 协调者写prepare日志; 2 参与者写prepare日志; 3 协调者写commit日志; 4 参与者写commit 日志; 共4次.

而ob的2阶段共3次日志延迟; 1 参与者写prapare 日志; 2 参与者写commit 日志; 3 参与者写clear req 日志;
但是ob在参与者事务提交后, 未写 ccommit日志时就想客户端返回了 commit ok; 所以客户端感知的只有1 次日志延迟;

这样有问题吗? 事务提交后, 未落盘 commit 日志时 参与者宕机; 重启后的事务数据状态怎么判断呢? 由于没有commit日志, 只能回滚? 但这时已经向客户端返回commit ok了, 这样是矛盾的; 请问这个问题怎么解决的?