1) 出处:幂等性源自数学概念,表示f(x) = f(f(x));
含义:多次执行一个函数得到的值和执行一次得到的值相同。
如:f(x) = pow(x, 1); f(x) = abs(x);
2) 计算机中:幂等性表示执行多次所产生的影响与执行一次所产生的影响相同。
业务场景[1]:
- 绑定银行卡发送短信接口。
如果APP重复点击调用后台接口,后台重复调用第三方接口,造成用户收到多条短信,一般情况下控制在60s内再重发短信,如果不做控制,每一次调用第三方接口都会收费。
2.创建订单接口。
如果APP端因网络问题用户重复点击多次,会生成多个订单号,会造成系统业务问题。
3) 常用保证幂等性方法:
- 最多一次执行方法[2]。(加ID和查询log)
- 将每一个不同的业务操作赋予全局唯一ID
- 进行操作前,查询log,查询该ID的执行记录是否存在。
- 若未执行,则记录此操作的执行记录并开始执行。
- 若已经执行,则放弃执行此次业务操作。
- 若执行失败,则删除该执行记录。
- 若执行宕机,则一定时间后,删除该操作,并执行另一相同操作。
2.支付的具体业务流程如下[3]:
a.获取token
b.使用token调用支付
c.根据token查询此次操作是否存在,如果存在则表示这次操作已经执行过,直接返回结果;如果不存在,支付扣款,保存结果
d.给客户端返回结果
[1]https://blog.csdn.net/qq_39291929/article/details/81429275
[2]https://cloud.tencent.com/developer/article/1394087
[3] https://blog.csdn.net/yaosiyu1991/article/details/79380561