处理多状态系统避免不一致的状态
Handling Multi-State Systems Avoiding Inconsistent States
这是我的用例:
我有一项服务(服务 1)需要在收到请求时更新多个外部服务(服务 2、服务 3)中某个实体的状态。我还必须更新本地状态(服务 1)。我正在尝试处理这种情况下的失败情况:
- 我成功更新了外部服务 2 和 3 中的状态,但我无法更新服务 4 中的状态。
- 我成功更新了外部服务 2 和 3 中的状态,我死了。
- 我成功地更新了所有外部服务中的状态,但是我无法在我的本地系统中保留状态。
假设服务2做产品退款,服务3将发票标记为已付款。现在,如果我成功发出退款(服务 2)但未能将发票标记为已付款(服务 3),我将在财务核对期间产生严重的业务影响。
在所有这些情况下,是否有适当的方法来处理失败的情况?
正确的方法是使用分布式事务和两阶段提交,例如应用 XA 协议。
这是我的用例:
我有一项服务(服务 1)需要在收到请求时更新多个外部服务(服务 2、服务 3)中某个实体的状态。我还必须更新本地状态(服务 1)。我正在尝试处理这种情况下的失败情况:
- 我成功更新了外部服务 2 和 3 中的状态,但我无法更新服务 4 中的状态。
- 我成功更新了外部服务 2 和 3 中的状态,我死了。
- 我成功地更新了所有外部服务中的状态,但是我无法在我的本地系统中保留状态。
假设服务2做产品退款,服务3将发票标记为已付款。现在,如果我成功发出退款(服务 2)但未能将发票标记为已付款(服务 3),我将在财务核对期间产生严重的业务影响。
在所有这些情况下,是否有适当的方法来处理失败的情况?
正确的方法是使用分布式事务和两阶段提交,例如应用 XA 协议。