分布式系统知识点
2PC 全称二阶段提交(two phase commit), 用于实现分布式事务的原子性. 即对于一个操作, 保证所有节点要么都执行, 要么都不执行. 由于不同节点不能直接获取其他节点的操作执行情况, 因此算法引入一个 协调者 (coordinator), 执行操作的节点称为 参与者 . 由参与者向协调者通知其操作的执行结果, 协调者根据结果通知所有参与者中止/提交操作. 算法分为两个阶段: 准备(Prepare)阶段和提交(Commit)阶段, 又称为投票阶段和执行阶段. 准备阶段 协调者给每个参与者发送 prepare 消息, 通知参与者执行操作. 参与者要么返回失败(例如权限验证失败), 要么写本地的 redo 和 undo 日志, 并执行此操作, 但是不提交, 然后返回成功的消息. 提交阶段 协调者发送完 prepare 消息后, 就进入本阶段, 等待参与者的回复. 如果所有参与者都回复成功, 那么协调者再向每个参与者发送 commit 消息, 通知其 commit 此操作. 否则, 向所有参与者发送 rollback 消息, 通知其回滚此操作. 参与者的回复超时也会导致此结果. 参与者收到 commit 消息后, 就会将操作提交, 并释放操作执行期间占用的资源. 如果参与者收到 rollback 消息, 则会利用 undo 日志回滚操作, 并释放占用的资源. 完成提交