该术语由拉丁语词根组合而成,是一个数学概念:
- idem:相同、同一个
- potent:有能力的、有作用的,源自“力量、幂”
合起来大致意为“保持同样作用”或“重复执行,效果不变”。
示例
例如,“将订单状态设为‘已付款’”:
第一次执行:
未付款 → 已付款
网络超时后,客户端无法确认操作是否成功,于是再次执行:
已付款 → 已付款
无论执行一次还是十次,最终结果均为“已付款”,不会重复扣款。这就是幂等性。
相反,“从账户扣除 100 元”通常不是幂等操作:
执行一次:余额减少 100 元
执行两次:余额减少 200 元
因此,支付系统通常为每次付款分配唯一的订单号或请求编号;当相同编号的请求被重复提交时,系统直接返回首次处理的结果,从而避免重复扣款。