此坑待填

# 2PC(two-phase commit)

2PC 是强一致,中心化的原子提交协议

两个阶段:准备阶段、提交阶段

两个角色:协调者 (coordinator), 参与者 (Participant)

深度理解:正确理解二阶段提交(Two-Phase Commit)_2 阶段提交 - CSDN 博客

# 第一阶段

image-20240709230522019

第三点记录的日志有 redo log 和 undo log

只有所有的 Participant 都返回 yes 才会进入第二阶段。否则 coordinator 发送 global roolback, 各节点根据记录的 undo log 全局回滚,向 client 返回错误。

# 第二阶段

image-20240709235508995

根据第一阶段的 redo log 提交事务

# 问题

  1. 同步阻塞:
    • 协调者需要等待所有参与者的响应
    • 每个参与者第二阶段的开始需要等待 coordinator 的 global commit 或 global roolback
  2. 数据不一致
    • 只有一部分参与者回滚成功
    • 只有一部分参与者提交成功
  3. 单点问题:太依赖协调者,一旦协调者出故障会很麻烦
  4. 太保守,为了保证强一致性牺牲性能。
更新于

请我喝[茶]~( ̄▽ ̄)~*

MikeMao 微信支付

微信支付

MikeMao 支付宝

支付宝

MikeMao 贝宝

贝宝