什么是幂等性
幂等性定义:
一次和多次请求某一个资源对于资源本身应该具有同样的结果
任意多次执行对资源本身所产生的影响均与一次执行的影响相同
幂等性定义的几个重点:
幂等不仅仅只是一次或者多次请求对资源没有副作用...,并不关注结果
网络超时等问题,不是幂等的讨论范围
幂等性是系统服务对外一种承诺,而不是实现
承诺只要调用接口成功,外部多次调用对系统的影响是一致的
声明为幂等的服务会认为外部调用失败是常态,并且失败后必然会有重试...,不如超时,而导致不知道结果或者请求失败的异常情况下,发起多次请求
幂等的目的是请求多次确认第一次请求成功,不会因为多次请求而出现多次的状态变化
保证幂等性的情况
在SQL中,有以下三种场景,只有第三种场景需要保证幂等性...则进行支付流程,修改订单的状态为已支付
防重复提交策略
在保证幂等的策略中,执行是分两步执行的,后面一步依赖上面一步的查询结果,这样就无法保证原子性
无法保证原子性在高并发的情况下会存在问题:
第二次请求在第一次请求的下一步订单状态没有修改为...进行支付操作
无论成功与否,执行完成之后更新订单的状态为成功或失败,删除去重表中的数据
后续订单因为表中的唯一索引插入失败,返回操作失败,直到第一次请求完成(成功或者失败)
防重表的作用是实现加锁的功能