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

Posted https://github.com/conanl5566

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Filter+Redis解决项目之间调用的幂等性相关的知识,希望对你有一定的参考价值。

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

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

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

1、表单重复提交;

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

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

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

方法:

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

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

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

以上是关于Filter+Redis解决项目之间调用的幂等性的主要内容,如果未能解决你的问题,请参考以下文章

java接口的幂等性及解决方案

java接口的幂等性及解决方案

分布式服务的幂等性设计

如何避免重复提交?分布式服务的幂等性设计!

接口的幂等性

如何理解RESTful的幂等性