其他分享
首页 > 其他分享> > 如何保证接口的幂等性?

如何保证接口的幂等性?

作者:互联网

幂等性是什么?

一次接口调用和多次接口调用都能得到与预期相符的结果。

怎么解决?

传统方法:代码增加前置判断,但是这样工作量太大了。

我们需要一种无侵入的幂等解决方案。

构建幂等表示通用的解决方案

幂等表设计

每次在请求头部放一个RequestId(保证唯一的),通过网关检查RequestId,幂等表放在Redis里,key是系

统id-RequestId,value是RequestId的处理状态,OK代表处理完成,PROC代表正在处理,然后还会设置过期

时间。如果幂等表里没有这个RequestId,就会把它保存到幂等表里,并且设置状态为PROC,表示请求正在被

处理。后端处理完请求后,更新幂等表的value状态为OK,返回正确结果给前端。

如果消息重发了,网关检查RequestId是在幂等表里,它就不会放给后端服务,会返回前端一个重复请求的响

应。

image

注解实现

利用AOP的后置通知,更新Redis状态。

image

Reference

标签:请求,幂等表,处理,接口,如何,保证,RequestId,表里
来源: https://www.cnblogs.com/bllbl/p/15383407.html