处理多状态系统避免出现不一致的状态

时间:2019-03-11 09:19:31

标签: database-design transactions atomic distributed-system idempotent

这是我的用例:

我有一个服务(服务1),在收到请求时需要更新多个外部服务(服务2,服务3)中某个实体的状态。我还必须更新本地状态(服务1)。在这种情况下,我正在尝试处理失败情况:

  1. 我成功更新了外部服务2和3中的状态,而我没有更新服务4中的状态。
  2. 我成功更新了外部服务2和3中的状态,我死了。
  3. 我成功更新了所有外部服务中的状态,但是无法将状态持久保存在本地系统中。

说服务2退还产品,服务3将发票标记为已付款。现在,如果我成功签发了退款(服务2),但没有将发票标记为已付款(服务3),那么在财务对帐期间,我将对业务产生严重影响。

在所有这些情况下,是否有适当的方法来处理失败的方案?

0 个答案:

没有答案