是由拉丁语词根组合出来的数学术语:
- idem:相同、同一个
- potent:有能力的、有作用的,源自“力量、幂”
合起来大致是“保持同样作用”或“重复作用,效果不变”。
案例
比如“把订单状态设置为已付款”:
第一次执行:
未付款 → 已付款
网络超时后,客户端不知道是否成功,于是又执行一次:
已付款 → 已付款
无论执行一次还是十次,最终都是“已付款”,不会重复扣款。这就是幂等。
相反,“给账户扣款 100 元”通常不是幂等操作:
执行一次:余额减少 100 元
执行两次:余额减少 200 元
所以支付系统一般会给每次付款设置唯一的订单号或请求编号。相同编号重复提交时,系统直接返回第一次的处理结果,避免重复扣款。