,并不关注结果
网络超时等问题,不是幂等的讨论范围
幂等性是系统服务对外一种承诺,而不是实现
承诺只要调用接口成功,外部多次调用对系统的影响是一致的
声明为幂等的服务会认为外部调用失败是常态,并且失败后必然会有重试...幂等性的使用场景
业务开发中,经常遇到重复提交的情况:
由于网络问题无法收到请求结果而重新发起请求
前端的操作抖动而造成的重复提交的情况
在交易系统中,支付系统这种重复提交造成的问题尤为明显:
用户在...,不如超时,而导致不知道结果或者请求失败的异常情况下,发起多次请求
幂等的目的是请求多次确认第一次请求成功,不会因为多次请求而出现多次的状态变化
保证幂等性的情况
在SQL中,有以下三种场景,只有第三种场景需要保证幂等性...:
相同的业务单号,认为是同一业务
使用唯一的业务单号确保:后面多次相同业务单号的处理逻辑和执行效果是一致的
幂等实现示例-支付:
先查询订单是否支付过
如果已经支付过,返回支付成功
如果没有支付,...进行支付操作
无论成功与否,执行完成之后更新订单的状态为成功或失败,删除去重表中的数据
后续订单因为表中的唯一索引插入失败,返回操作失败,直到第一次请求完成(成功或者失败)
防重表的作用是实现加锁的功能