项目中的后台的幂等性是怎么控制的?

325 阅读1分钟

什么是幂等?

数学上:f(x) = f(f(x));成立

编程领域:同一个系统,使用同一个条件,多次请求对系统资源的影响是一致的。

什么要保证幂等?

在支付的业务中几乎所有的接口都要做幂等,如果不保证可能会涉及到资损,造成严重的后果。

比如:

用户购买商品,支付扣款成功,但是返回结果的时候网络异常,用户又重复支付一次,导致扣款两次,流水也有两条。

项目中的幂等是怎么保证的?

一.增加幂等ID

1.前端请求过来会带一个requestId,作为幂等id

2.通过幂等id加分表键位for update nowait去指定库的幂等表里面查

问:

   for update和for update nowait区别?

3.检查数据是否已经存在,如果存在则不继续执行,返回幂等异常。

二.唯一索引

通过订单号,用户id,用户角色id,建立唯一索引。

如果重复插入,会因为重复索引插入失败。

三.分布式锁

可以查看redis缓存中是否存在该订单号的key。