大家好。我实现了两阶段提交(2PC)
有 2 个阶段 - 准备、提交和有一个阶段以防回滚
通信 - REST API(/prepare、/commit、/rollback 端点)
根据 /prepare 阶段 2pc 的规范,我需要在数据库中阻塞一行。
在当前的实现中,我将布尔字段锁定在参与表中的每个微服务中,并在第一阶段将值设置为 true,在第二阶段设置为 false。
我知道我的实现非常简单而且不太正确。
我的问题是:如何在第一阶段阻止表格中的一行?
已经尝试过:
select ... for update - 但它不起作用,因为它只在一个事务级别阻塞,我需要阻塞到第二阶段
我在考虑 dbms_lock (基本级别锁),但我不完全确定这是否是正确的解决方案。
我的堆栈:Java、Spring Data、MySql
如何在第一阶段锁定行以使其保持到分布式事务中的整个提交(第二阶段)完成为止是正确的。
P/S SAGA 实现我知道(非常有趣的 2PC 实现)
非常感谢。