关于2PC中的“Coordinate 和参与者在第二阶段挂了,但是挂的参与者已经执行了 commit/rollback 操作”这种情况,原文说的这个会引起数据不一致,但我觉得应该不会。Coordinate既然已经推进到第二阶段了,那么其必然在第一阶段已经有决策了(commit或者abort),此时正常的2PC算法为了保证durability,都会将Coordinate的状态记录下来,那么即使其在第二阶段crash了,等Coordinate恢复过来读取自身持久化存储中记录的状态就能知道自己应该做何决策。比如自己应该commit,那么自己之前就不会对任何participant发出DoAbort的命令,也就不存在coordinator做出了commit的决策,但是有的挂掉的participant却执行了abort的这种数据不一致的情况。