当前位置: 首页 > news >正文

建立网站站点的过程中正确的是有趣的网站小游戏网址

建立网站站点的过程中正确的是,有趣的网站小游戏网址,网站制作运营公司,东莞清溪镇做网站公司⛰️个人主页: 蒾酒 #x1f525;系列专栏#xff1a;《spring boot实战》 #x1f30a;山高路远#xff0c;行路漫漫#xff0c;终有归途 目录 写在前面 内容简介 实现思路 实现步骤 1.自定义限流注解 2.编写限流拦截器 3.注册拦截器 4.接口限流测试 写在前…  ⛰️个人主页:     蒾酒 系列专栏《spring boot实战》 山高路远行路漫漫终有归途 目录 写在前面 内容简介 实现思路 实现步骤 1.自定义限流注解 2.编写限流拦截器 3.注册拦截器 4.接口限流测试 写在前面 本文介绍了springboot开发后端服务中高并发接口限流设计与实现坚持看完相信对你有帮助。 同时欢迎订阅springboot系列专栏持续分享spring boot的使用经验。 内容简介 本文介绍了一种使用自定义注解结合拦截器和redis实现接口限流方法。这种方法也是企业常用方法是一种比较优雅的解决方案。 优点分析 灵活性和可定制性 通过自定义注解和拦截器可以根据具体的业务需求灵活定义限流规则满足不同接口的限流需求。 性能优化 使用Redis等高性能缓存数据库存储限流计数器能够有效减轻应用程序的压力提高系统的性能表现。 实时性和持久性 Redis具有较高的读写性能可以实时更新限流计数器并且数据持久化保证限流规则的持久性。 分布式支持 对于分布式系统使用Redis等分布式缓存数据库可以方便地实现跨节点的限流策略和计数器共享确保限流的准确性和一致性。 成熟稳定 这种方法经过实践验证在众多企业项目中得到广泛应用被认为是一种成熟、稳定且可靠的解决方案。 实现思路 通过自定义一个注解标注需要进行限流的接口方法通过拦截器对标记改注解的方法进行拦截处理 将同一ip访问同一接口的次数缓存到redis,拦截器中进行判断处理达到访问阈值直接拒绝。 实现步骤 1.自定义限流注解 import java.lang.annotation.*;/*** author mijiupro*/ Retention(RetentionPolicy.RUNTIME) Target({ElementType.METHOD}) Inherited Documented public interface AccessLimit {int limit() default 10; // 限流阈值int seconds() default 60; // 时间窗口 } 2.编写限流拦截器 /*** 接口限流拦截器* author mijiupro*/ Slf4j Component public class AccessLimitInterceptor implements HandlerInterceptor {private final StringRedisTemplate redisTemplate;public AccessLimitInterceptor(StringRedisTemplate redisTemplate) {this.redisTemplate redisTemplate;}Overridepublic boolean preHandle(NotNull HttpServletRequest request, NotNull HttpServletResponse response, NotNull Object handler) {if (!(handler instanceof HandlerMethod handlerMethod)) {return true;}Method method handlerMethod.getMethod();AccessLimit accessLimit method.getAnnotation(AccessLimit.class);// 若方法上没有AccessLimit注解直接放行if (accessLimit null) {return true;}int limit accessLimit.limit();int seconds accessLimit.seconds();String key generateKey(request); // 生成限流key// 使用基本类型long接收计数值并确保不会因自动装箱产生NullPointerExceptionLong countResult redisTemplate.opsForValue().increment(key, 1);long currentCount countResult ! null ? countResult : 0;if (currentCount 1) {// 如果是第一次访问设置过期时间redisTemplate.expire(key, seconds, TimeUnit.SECONDS);log.debug(设置访问限制计数为1{}, key);return true;}if (currentCount limit) {log.error(访问超过限制{}, key);throw new RateLimitException(ResultEnum.ACCESS_LIMIT_REACHED);}log.debug(访问限制计数递增{}, key);return true;}private String generateKey(HttpServletRequest request) {// 组合key的方式可以根据实际业务需要调整例如考虑方法名称、用户ID等return request.getRemoteAddr() : request.getContextPath() : request.getServletPath();}} 3.注册拦截器 Configuration public class WebConfig implements WebMvcConfigurer {private final AccessLimitInterceptor accessLimitInterceptor;public WebConfig( AccessLimitInterceptor accessLimitInterceptor) {this.accessLimitInterceptor accessLimitInterceptor;}Overridepublic void addInterceptors(NotNull InterceptorRegistry registry) {//添加上接口限流拦截器使之生效registry.addInterceptor(accessLimitInterceptor).order(0);} } 4.接口限流测试 随便写个接口标记限流注解进行测试 这里使用swagger3进行测试 Spring Boot3整合knife4j(swagger3)_springboot3 knife4j-CSDN博客文章浏览阅读2.1k次点赞39次收藏52次。Knife4j · 集Swagger2及OpenAPI3为一体的增强解决方案. | Knife4j (xiaominfo.com)作者的使用的spring boot 3.2.2为当前最新版所以依赖导入最新的knife4j 4.4.0。3.1 增强模式 | Knife4j (xiaominfo.com)好一个spring boot项目且版本为3X项目可正常启动。快速开始 | Knife4j (xiaominfo.com)接下来配置以下接口文档的作者等信息。Tag注解标记接口类别。_springboot3 knife4jhttps://blog.csdn.net/qq_62262918/article/details/135761392?spm1001.2014.3001.5502 GetMapping(/get-int)AccessLimit( limit 5, seconds 60)public Integer getInt() {return 1;} 前五次访问 第六次访问 写在最后 spring boot3自定义注解拦截器Redis实现高并发接口限流到这里就结束了本文介绍了一种常见的实现方法。任何问题评论区或私信讨论欢迎指正。
http://www.zqtcl.cn/news/227437/

相关文章:

  • 南宁网站设计要多少钱修改wordpress中的 功能 小工具
  • 南昌高端网站开发费用表域名价格排行
  • 怎么接网站开发外包中国观鸟记录的网站架构
  • 青海省住房和城乡建设厅的官方网站网站举报能不能查到举报人
  • dw做的网站如何上传云服务器网址生成app一键生成器
  • 山西建设厅网站密钥房山营销型网站建设
  • 网站空间多少钱哪里接单做网站
  • 建设部网站资质人员查询页面设计的对称方法包括哪几种形式
  • 滁州网站建设哪个好点iis发布网站无法访问
  • 网站项目建设的定义百度站长平台清退
  • ip开源网站FPGA可以做点什么建设网站的工作职责
  • 重庆微信网站开发公司建设网站技术标准
  • 网站开发浏览器银川市建设诚信平台网站
  • 找合伙人做红木家具网站建设银行员工学习网站
  • iis的默认网站没有自动启动长春小程序开发制作
  • 佛山住房和城乡建设部网站wordpress 英文主题
  • 零食网站策划书厦门建设网站的公司
  • 自己做的网站怎么发布到网上湖南做网站 干净磐石网络
  • steam网站代做设计公司招聘信息
  • 网站开发 书籍无广告自助建站
  • 青岛电子商务网站建设wordpress购物车会员
  • 大理建网站沉默是金吉他谱
  • 门户网站需要多少费用wordpress的中文插件安装
  • 男做基视频网站怎么做网上直营店网站
  • 网站栏目排序个人站长网站应该如何定位
  • phpcms wap网站搭建学网站开发难吗
  • 做一个网页一般多少钱seo实训思考与总结
  • 怎么用wordpress做搜索网站wordpress 作品集插件
  • 芜湖的网站建设韩国封号事件网站建设
  • 做外贸网站的价格wordpress远方的雪