Filter+Redis解决项目之间调用的幂等性

幂等性是编程中的一个重要概念,确保接口多次调用不会造成额外影响。在远程调用和重试场景下,避免重复消费是关键。针对此问题,可以采取请求ID、分布式锁等方法实现接口幂等性。具体做法包括:在请求中携带唯一ID,通过Redis作为分布式锁,服务器检查ID是否正在处理,避免重复执行业务逻辑。这样能有效防止如表单重复提交和接口重试导致的数据冲突。
摘要由CSDN通过智能技术生成

幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。

在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同

在项目远程调用中,如果接口调用失败或者是超时,客户端都会采用重试请求,但是在客户端重试的过程中都会导致服务器服务处理出现【重复消费】;一般情况下,接口产生重复消费的原因有以下2种:

1、表单重复提交;

2、调用接口过程中失败产生重试;

这时候接口调用就会产生了一个叫做幂等性的问题

对于查询和删除数据的场景都有天然的幂等性,那么我们考虑幂等性处理更多是关注于新建数据与更新数据。

方法:

1、发起请求带一个requestID传入到接口;

2、Filter拦截后添加到Redis(分布式锁),执行完成释放;

3、服务器接收请求时先判断id是否正在处理中,如果有的话不能在执行业务逻辑,直接return 处理中;否则执行我们的业务逻辑,如果是后面在过来的话,根据业务判断,返回已处理之类的;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值