幂等(Idemotence)是计算机科学中一个重要的概念,尤其在分布式系统,数据库操作和并发编程中经常提到。幂等性操作的一个显著特点是无论执行多少次,结果和执行一次的结果是相同的。
https://cloud.tencent.com/developer/article/2400000
定义
An idempotent element of a set does not change in value when multiplied by itself.
一个操作是幂等的,如果其在执行一次和执行多次的效果是相同的,换句话说,无论对某操作执行零次一次还是多次,其效果不变。
幂等性例子:
例如:
HTTP方法中的GET、PUT、DELETE,Head通常是幂等的。
GET /resource/123:无论调用多少次,返回的结果都是一样的,不会改变资源状态。
DELETE /resource/123:删除一个资源后,再次调用该接口不会产生新的效果。
而POST通常不是幂等的,因为每次调用可能会创建一个新的资源。
- 应对网络不稳定
在网络通信中,请求可能会因为以下原因被重复发送:
超时重试 :客户端未收到服务器响应时,可能认为请求失败并重新发送。
负载均衡重试 :某些负载均衡器会在超时或失败时自动重试请求。
用户行为 :用户可能多次点击提交按钮,导致重复请求。
如果没有幂等性,这些重复请求可能导致数据重复、状态异常等问题。例如:
重复下单导致生成多个订单。
重复支付导致扣款多次。
通过实现幂等性,可以确保即使请求被重复发送,系统的行为仍然符合预期。