【发布时间】:2011-11-15 09:44:16
【问题描述】:
我相信大多数人都知道什么是 2PC(两阶段提交协议)以及如何在 Java 或大多数现代语言中使用它。基本上,当您有 2 个或更多 DB 时,它用于确保事务同步。
假设我有两个 DB(A 和 B)在两个不同的位置使用 2PC。在 A 和 B 准备好提交事务之前,两个 DB 都会向事务管理器报告它们已准备好提交。因此,当事务管理器被确认时,它会向 A 和 B 发送一个信号,告诉他们继续。
这是我的问题:假设 A 收到信号并提交了交易。一切搞定后,B也准备照做,但有人拔掉了电源线,导致整个服务器关机。当 B 重新上线时,B 会做什么? B是怎么做到的?
请记住,A 已提交但 B 未提交,我们使用的是 2PC(所以,2PC 的设计停止工作了,不是吗?)
【问题讨论】:
标签: database distributed-transactions