「SpringCloud」(三十九)使用分布式锁实现微服务重复请求控制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「SpringCloud」(三十九)使用分布式锁实现微服务重复请求控制相关的知识,希望对你有一定的参考价值。
参考技术A 通常我们可以在前端通过防抖和节流来解决短时间内请求重复提交的问题,如果因网络问题、nginx重试机制、微服务Feign重试机制或者用户故意绕过前端防抖和节流设置,直接频繁发起请求,都会导致系统防重请求失败,甚至导致后台产生多条重复记录,此时我们需要考虑在后台增加防重设置。
考虑到微服务分布式的场景,这里通过使用Redisson分布式锁+自定义注解+AOP的方式来实现后台防止重复请求的功能,基本实现思路:通过在需要防重的接口添加自定义防重注解,设置防重参数,通过AOP拦截请求参数,根据注解配置,生成分布式锁的Key,并设置有效时间。每次请求访问时,都会尝试获取锁,如果获取到,则执行,如果获取不到,那么说明请求在设置的重复请求间隔内,返回请勿频繁请求提示信息。
相关引用:
1、防重配置项及通过SpringExpression获取相应参数:https://www.jianshu.com/p/77895a822237
2、Redisson分布式锁及相关工具类:https://blog.csdn.net/wsh_ningjing/article/details/115326052
GitEgg: GitEgg 是一款开源免费的企业级微服务应用开发框架,旨在整合目前主流稳定的开源技术框架,集成常用的最佳项目解决方案,实现可直接使用的微服务快速开发框架。
GitHub - wmz1930/GitEgg: GitEgg 是一款开源免费的企业级微服务应用开发框架,旨在整合目前主流稳定的开源技术框架,集成常用的最佳项目解决方案,实现可直接使用的微服务快速开发框架。
以上是关于「SpringCloud」(三十九)使用分布式锁实现微服务重复请求控制的主要内容,如果未能解决你的问题,请参考以下文章
SpringCloud实战(十九)-Sentinel 流量控制
SpringCloud实战(十九)-Sentinel 流量控制
SpringCloud Alibaba微服务实战三十 | 统一资源服务器配置模块
SpringCloud - Spring Cloud Alibaba 之 Seata分布式事务服务;集成Nacos配置中心(十九)