五厂面经真题集阿里巴巴面经高频阿里真题幂等最终一致性速答 · 约 5 分钟更新 2026-09-29

外部工具不稳定时,怎么保证任务最终一致性,避免重复扣款或重复发货?

一句话结论

用唯一请求键实现幂等,超时后先查询操作状态再决定是否重试,并通过异步对账发现意图与实际结果的差异,再进入补偿或人工处理。

先这样答

结论是用幂等加对账保证最终一致性。每个业务操作都带唯一请求键。服务端收到请求后,先识别这个请求是否已经处理。遇到重复请求时,不再执行扣款或发货,而是直接返回首次执行的结果。这样即使调用方重复提交,也不会产生重复扣款或重复发货。

最关键的是处理超时后的不确定状态。超时只表示调用方没有及时拿到结果,不能据此判断操作失败。调用方此时先查询这次操作的状态,再根据查询结果决定是否重试。如果操作已经成功,就直接使用已有结果。如果没有执行,再发起后续处理。默认动作必须是查询,不是盲目重发。

幂等解决重复执行问题,对账处理遗漏和状态差异。异步任务定期比对业务意图与外部工具的实际执行结果。两边一致时结束处理。出现差异时,任务进入补偿或人工处理。这样即使外部工具短暂不稳定,系统也能持续发现未完成或结果不一致的操作,并把任务推进到一致状态。

面试官会怎么追问

  • 「为什么超时后不能直接重试?」 超时不代表操作失败。外部工具可能已经完成扣款或发货,只是结果没有及时返回。直接重试可能造成重复执行,所以要先查询原操作状态。

  • 「唯一请求键具体解决什么问题?」 它让服务端识别多次请求是否对应同一个业务操作。服务端发现重复请求后,不再重复执行,而是返回首次结果。它直接避免重复扣款和重复发货。

  • 「有了幂等,为什么还需要对账?」 幂等只处理重复请求,不负责发现意图与实际结果之间的差异。异步对账会定期比较两者。发现差异后,再进入补偿或人工处理。

回答的坑

  • 把超时直接当成失败并立即重试,会把一次不确定状态变成重复扣款或重复发货。

  • 只讲幂等而不讲对账,无法处理业务意图与实际执行结果长期不一致的问题。

—— 本题完 ——