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

户网站开发的小公司怎么做链接有图和文字

户网站开发的小公司,怎么做链接有图和文字,东莞市建设局门户网站,2022房产政策最新消息⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 🌊山高路远,行路漫漫,终有归途 目录 写在前面 内容简介 实现思路 实现步骤 1.自定义限流注解 2.编写限流拦截器 3.注册拦截器 4.接口限流测试 写在前…

 

⛰️个人主页:     蒾酒

🔥系列专栏:《spring boot实战》

🌊山高路远,行路漫漫,终有归途


目录

写在前面

内容简介

实现思路

实现步骤

1.自定义限流注解

2.编写限流拦截器

3.注册拦截器

4.接口限流测试


写在前面

本文介绍了springboot开发后端服务中,高并发接口限流设计与实现,坚持看完相信对你有帮助。

同时欢迎订阅springboot系列专栏,持续分享spring boot的使用经验。

内容简介

本文介绍了一种使用自定义注解结合拦截器和redis实现接口限流方法。这种方法也是企业常用方法,是一种比较优雅的解决方案。

优点分析

  1. 灵活性和可定制性: 通过自定义注解和拦截器,可以根据具体的业务需求灵活定义限流规则,满足不同接口的限流需求。

  2. 性能优化: 使用Redis等高性能缓存数据库存储限流计数器,能够有效减轻应用程序的压力,提高系统的性能表现。

  3. 实时性和持久性: Redis具有较高的读写性能,可以实时更新限流计数器,并且数据持久化,保证限流规则的持久性。

  4. 分布式支持: 对于分布式系统,使用Redis等分布式缓存数据库可以方便地实现跨节点的限流策略和计数器共享,确保限流的准确性和一致性。

  5. 成熟稳定: 这种方法经过实践验证,在众多企业项目中得到广泛应用,被认为是一种成熟、稳定且可靠的解决方案。

实现思路

通过自定义一个注解标注需要进行限流的接口方法,通过拦截器对标记改注解的方法进行拦截处理

将同一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?spm=1001.2014.3001.5502

    @GetMapping("/get-int")@AccessLimit( limit = 5,  seconds= 60)public Integer getInt() {return 1;}

前五次访问:

第六次访问:

写在最后

spring boot3自定义注解+拦截器+Redis实现高并发接口限流到这里就结束了,本文介绍了一种常见的实现方法。任何问题评论区或私信讨论,欢迎指正。

http://www.yayakq.cn/news/261104/

相关文章:

  • 电脑什么软件可以做动漫视频网站点击出字插件wordpress
  • 会员充值网站怎么做拖拽自助建站系统源码
  • 茂名网站制作计划国际外贸网络交易平台
  • 网上智慧团建网站部署一个网站大概多少钱
  • 做的最成功的网站php可以做网站app吗
  • 西乡网站建设域名申请通过了网站怎么做
  • 如何添加网站图标制作网页方法
  • 宝安公司网站建设淘宝补流量平台
  • 电子商务企业网站有哪些定制家具价格
  • 西宁制作网站多少钱短视频seo营销
  • 湖南智能网站建设哪里好广西住房城乡建设厅网站
  • 绵阳网站关键词线上运营平台有哪些
  • 网站如何做百度才会收录做网站的一年能挣多少钱
  • 公司网站流程和费用四川网站建设外包
  • 德阳做网站热点新闻事件及评论2023
  • 宝山青岛网站建设wordpress恶意登录
  • 海南网站建设方面安庆网站建设哪家好
  • 上海网站排名松江新城建设有限公司网站
  • 建站网站模板下载个人网站的设计
  • 做网站页面的需要哪些技巧网站建设企业公司
  • 知乎网站建设用的工具专注南昌网站建设
  • 东莞专业的网站制作有哪些shopify如何做瀑布流网站
  • 长沙网站seo报价网站建设php怎么安装
  • wordpress企业站被黑动画制作软件排行榜
  • 舞蹈培训机构网站建设产品网络推广方案范文
  • 电子商务网站开发教程课后答案手机网站百度关键词排名
  • 在线网站建设收费新媒体运营方案
  • 我想在阿里巴巴上给别人做网站做便宜的宝贝的网站
  • 免费网站流量统计工具各地微信推广平台大全
  • 建什么网站访问量高网站备案信息地址