定义
接口一次请求和多次请求的结果一致。
为什么需要幂等
例如转账业务,服务A请求服务B时返回结果超时,这个时候发起重试再次请求,应该是转账一笔而不是两笔。
创建订单需要减库存,如果减库存的接口超时了,重复调用应该保证不会多减一次库存。
3. 接口超时了,到底如何处理
服务B转账接口支持幂等,服务A重新发起请求即可。
服务B转账接口不支持幂等,服务A先调用服务B的查询接口,如果查询失败则发起转账流程,如果查询成功则代表已经转账成功,继续成功流程即可。
如何设计幂等
数据库幂等
select语句是天然幂等的,无论查询多少次都不会有问题。
delete语句可以利用唯一索引的值来进行删除或逻辑删,多次请求效果一致。
insert语句需要保证幂等性。
update语句需要保证幂等性。
乐观锁
数据库新增version字段,当更新时查询