业界对“幂等”的概念定义都稍有不同,但大体是一致的,
总结一下就是一句话:幂等是系统接口对外的一种承诺, 承诺只要调用接口成功, 外部多次调用对系统的影响是一致的。
所以声明为幂等的接口会认为外部调用失败和并发是常态,并且失败之后必然会有重试。
根据经验一个幂等的接口通常要对请求的业务是否已存在进行校验,对业务状态进行校验,对处理的资源进行锁定(
常用的方法是数据库行级锁(for update),使用时要走索引,锁一行要走唯一索引,否则会锁全表。)归根到底就是
解决重试和并发下的一致性问题。
只读接口服务是无状态的,所以不存在幂等的问题。