分布式系统接口幂等性

https://blog.csdn.net/qq_39291929/article/details/81429275(主内容)

https://www.jianshu.com/p/25f4b64e2068(token机制)


概念:对其任意次数的操作结果与一次操作的结果相同(不用担心重复执行会对系统造成改变)

业务场景:

1.绑定银行卡发送短信接口。如果APP重复点击调用后台接口,后台重复调用第三方接口,造成用户收到多条短信,一般情况下控制在60s内再重发短信,如果不做控制,每一次调用第三方接口都会收费。

2.创建订单接口。如果APP端因网络问题用户重复点击多次,会生成多个订单号,会造成系统业务问题。


解决方案:

幂等性解决方案

1.数据库表加唯一索引,防止新增脏数据。比如对订单号进行加唯一索引,防止生成重复订单。

如果不加索引的后果是:当根据订单号去支付,支付表生成两条重复的订单号,然后去支付宝、微信、易宝支付去支付,付款完成后,第三方异步回调接口,本地接口首先根据订单号查询实体,发现查询到两条,系统就会抛出异常。

2.分布式锁

利用redis,在业务系统插入数据或者更新数据,获取分布式锁,然后做操作,之后释放锁,这样其实是把多线程并发的锁的思路

3.token机制,防止重复提交

(1). 数据提交前要向服务的申请token,token放到redis中,token有效时间

(2). 提交后后台校验token,同时删除token,生成新的token返回(https://www.jianshu.com/p/25f4b64e2068)

你可能感兴趣的:(分布式系统接口幂等性)