最佳答案
我相信大多数人都知道2PC (二阶段提交)是什么,以及如何在 Java 或大多数现代语言中使用它。基本上,它用于确保当您有2个或更多的 DBs 时,事务是同步的。
假设我有两个在两个不同位置使用2PC 的数据库(A 和 B)。在 A 和 B 准备好提交事务之前,两个 DBs 都将向事务管理器报告它们准备好提交了。因此,当事务管理器得到确认时,它将向 A 和 B 发送一个信号,告诉他们继续。
我的问题是: 假设 A 接收到信号并完成了交易。一旦所有事情都完成了,B 将要做同样的事情,但有人拔掉了电源线,导致整个服务器关闭。当 B 重新上线后,B 会做什么?B 是怎么做到的?
记住,A 是提交的,而 B 不是,我们正在使用2PC (因此,2PC 的设计停止工作,不是吗?)