从资金事实开始
支付系统中的“成功”可能指请求被接收、渠道授权成功、内部账务记账完成,或者资金最终结算。不同阶段使用同一个成功状态,是大量一致性问题的来源。
设计系统前,应该先定义:
- 哪个系统记录不可争议的资金事实;
- 哪些状态允许回滚,哪些只能通过反向交易修正;
- 渠道结果未知时如何继续查询;
- 重复请求由哪一层负责幂等;
- 对账发现差异后如何恢复。
幂等不是一个字段
幂等键只是入口。完整的幂等设计还需要确定业务作用域、有效期限、并发写入策略、历史结果返回方式,以及相同键携带不同参数时的处理规则。
最终一致也需要期限
“稍后会一致”不是可执行的承诺。系统需要定义恢复时间目标、补偿触发条件和人工介入边界。对于资金系统,一致性策略最终必须落到可观测的运营流程上。