如何确保 2 个远程操作成功完成,并在其中一个远程操作失败时回滚所有操作


How to ensure that 2 remote operations complete successfully, and rollback all operations if 1 of the remote operations fails?

>我计划使用 PHP 连接到 2 台远程服务器。一个是MySQL数据库。另一个是作业队列服务器。

对于我推送到作业队列服务器的每个作业,我希望确保(恰好)将 1 条记录插入到 MySQL 数据库中。我想确保 MySQL 数据库记录和作业队列任务执行 100% 同步。

由于两者都是远程服务器,我担心有时其中一台服务器(或两者)可能存在连接问题。

在我的 PHP 应用程序中,如何确保 2 个远程操作成功完成,如果其中一个远程操作失败,则回滚所有操作?对于这种情况,我应该遵循任何编程最佳实践吗?

听起来像是一个非常基本的AND用例。由于您使用的是 PHP,因此您不必担心异步调用或超时等待。 要对其进行伪编码:

Start Transaction1
    ... do stuff... //transaction 1 still open, no commit
Start Transaction2
    ... do more stuff...
If (Transaction1 success && Transaction2 success) {
    commit Transaction1
    commit Transaction2
} else {
    rollback Transaction1
    rollback Transaction2
}