广告
返回顶部
首页 > 资讯 > 精选 >SpringMVC如何实现限流
  • 703
分享到

SpringMVC如何实现限流

springmvc 2023-05-30 19:05:46 703人浏览 薄情痞子
摘要

小编给大家分享一下springMVC如何实现限流,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!使用说明在项目中引入Guava相关包Http://mvnrepository.com/artifact/com.Google.g

小编给大家分享一下springMVC如何实现限流,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

使用说明

项目中引入Guava相关包

Http://mvnrepository.com/artifact/com.Google.guava/guava/21.0

Maven项目

<!-- https://mvnrepository.com/artifact/com.google.guava/guava --><dependency>  <groupId>com.google.guava</groupId>  <artifactId>guava</artifactId>  <version>21.0</version></dependency>

gradle项目

// https://mvnrepository.com/artifact/com.google.guava/guavacompile group: 'com.google.guava', name: 'guava', version: '21.0'

写一个springmvc的拦截器

SmoothBurstyInterceptor.java

import com.google.common.util.concurrent.RateLimiter;import org.springframework.WEB.servlet.ModelAndView;import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.util.concurrent.TimeUnit;public class SmoothBurstyInterceptor extends HandlerInterceptorAdapter {  public enum LimitType {    DROP,//丢弃    WaiT //等待  }    private RateLimiter limiter;    private LimitType limitType = LimitType.DROP;  public SmoothBurstyInterceptor() {    this.limiter = RateLimiter.create(10);  }    public SmoothBurstyInterceptor(int tps, SmoothBurstyInterceptor.LimitType limitType) {    this.limiter = RateLimiter.create(tps);    this.limitType = limitType;  }    public SmoothBurstyInterceptor(double permitsPerSecond, SmoothBurstyInterceptor.LimitType limitType) {    this.limiter = RateLimiter.create(permitsPerSecond, 1000, TimeUnit.MILLISECONDS);    this.limitType = limitType;  }  @Override  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {    if (limitType.equals(LimitType.DROP)) {      if (limiter.tryAcquire()) {        return super.preHandle(request, response, handler);      }    } else {      limiter.acquire();      return super.preHandle(request, response, handler);    }    throw new Exception("网络异常!");//达到限流后,往页面提示的错误信息。  }  @Override  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {    super.postHandle(request, response, handler, modelAndView);  }  @Override  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {    super.afterCompletion(request, response, handler, ex);  }  public RateLimiter getLimiter() {    return limiter;  }  public void setLimiter(RateLimiter limiter) {    this.limiter = limiter;  }}

SpringMVC拦截配置

WebConfig.java

@Componentpublic class WebConfig extends WebMvcConfigurerAdapter {  @Override  public void addInterceptors(InterceptorReGIStry registry) {    // 多个拦截器组成一个拦截器链    registry.addInterceptor(new SmoothBurstyInterceptor(100, SmoothBurstyInterceptor.LimitType.DROP)).addPathPatterns("/**");    //限流可配置为SmoothBurstyInterceptor.LimitType.DROP丢弃请求或者SmoothBurstyInterceptor.LimitType.WAIT等待,100为每秒的速率    super.addInterceptors(registry);  }}

看完了这篇文章,相信你对“SpringMVC如何实现限流”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: SpringMVC如何实现限流

本文链接: https://www.lsjlt.com/news/220636.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringMVC如何实现限流
    小编给大家分享一下SpringMVC如何实现限流,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!使用说明在项目中引入Guava相关包http://mvnrepository.com/artifact/com.google.g...
    99+
    2023-05-30
    spring mvc
  • 使用springmvc怎么实现一个限流拦截器
    这期内容当中小编将会给大家带来有关使用springmvc怎么实现一个限流拦截器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。限流器算法目前常用限流器算法为两种:令牌桶算法和漏桶算法,主要区别在于:漏桶算法...
    99+
    2023-05-30
    springmvc
  • 如何实现redis限流
    如何实现redis限流?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。redis限流的实现方式有3种,分别是:第一种:基于Redis的set...
    99+
    2022-10-18
  • redis如何实现限流
    redis实现限流的示例:使用接口实现,接口代码如下:#指定用户user_id的某个行为action_key在特定的时间内period只允许发生最多的次数max_countdef is_action_al lowed(u...
    99+
    2022-10-08
  • .Net Core如何实现限流
    小编给大家分享一下.Net Core如何实现限流,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、环境vs2019.Net Core 3.1引用 AspNetCo...
    99+
    2023-06-20
  • rabbitmq削峰限流如何实现
    RabbitMQ的削峰限流可以通过以下方式实现:1. 预取(Prefetch)机制:可以设置每个消费者一次从队列中获取的消息数量。通...
    99+
    2023-10-09
    rabbitmq
  • java接口限流如何实现
    在Java中实现接口限流可以使用以下几种方式: 计数器:维护一个计数器来统计每个接口的请求数量,当请求数量超过设定的阈值时,拒绝后...
    99+
    2023-10-25
    java
  • Java如何实现接口限流
    小编给大家分享一下Java如何实现接口限流,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!RateLimiterGoogle开源工具包Guava提供了限流工具类RateLimiter,基于令牌桶算法实现。1.maven依赖:...
    99+
    2023-06-21
  • Gin框架限流如何实现
    本文小编为大家详细介绍“Gin框架限流如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Gin框架限流如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。什么是限流限流是指通过一定的算法,对接口的请求进行...
    99+
    2023-07-05
  • SpringMVC如何实现
    小编给大家分享一下SpringMVC如何实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Web MVC简介Web开发中的请求-响应模型:在Web世界里,具体步骤...
    99+
    2023-06-02
  • redis如何实现分布式限流
    Redis可以使用令牌桶算法来实现分布式限流。令牌桶算法是一种常用的限流算法,它通过维护一个固定容量的令牌桶,每秒钟往桶里放入一定数...
    99+
    2023-09-09
    redis
  • PHP如何实现令牌桶限流
    本文操作环境:Windows7系统、PHP7.1、Dell G3电脑。PHP如何实现令牌桶限流?php 基于redis使用令牌桶算法实现流量控制本文介绍php基于redis,使用令牌桶算法,实现访问流量的控制,提供完整算法说明及演示实例,方...
    99+
    2014-12-14
    PHP 令牌桶限流
  • Redis中如何实现限流策略
    这篇文章将为大家详细讲解有关Redis中如何实现限流策略,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、简单的限流基本原理当系统处理能力有限,如何组织计划外的请求对系统...
    99+
    2022-10-19
  • redis lua限流算法如何实现
    本篇内容介绍了“redis lua限流算法如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!限流算法常见的限流算法计数器算法漏...
    99+
    2023-07-02
  • golang timer实现限流
    在日常开发中,我们常常会面对高并发的场景,这时候严格的限流就显得尤为重要。而在Golang中,实现限流的一种常用方式是使用定时器(Timer),通过控制定时器的触发时间来限制并发请求的数量。本文将介绍如何使用Golang的定时器实现限流。一...
    99+
    2023-05-14
  • SpringCloud中如何使用Sentinel实现限流
    这篇文章主要介绍了SpringCloud中如何使用Sentinel实现限流的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringCloud中如何使用Sentinel实现限流文章都会有所收获,下面我们一起来看...
    99+
    2023-06-26
  • java中如何实现redis限流操作
    这篇文章给大家分享的是有关java中如何实现redis限流操作的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体操作如下。导入所需依赖<properties>   &nb...
    99+
    2023-06-21
  • java如何实现单机接口限流
    这篇文章主要为大家展示了“java如何实现单机接口限流”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java如何实现单机接口限流”这篇文章吧。简单说就是设定某个接口一定时间只接受固定次数的请求,...
    99+
    2023-06-21
  • Redis限流怎么实现
    这篇文章给大家分享的是有关Redis限流怎么实现的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。面对越来越多的高并发场景,限流显示的尤为重要。当然,限流有许多种实现的方式,Redi...
    99+
    2022-10-18
  • php怎么实现限流
    这篇文章给大家分享的是有关php怎么实现限流的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   什么是接口限流   那么什么是限流呢?顾名思义,限流就是限制流量,包括并发的流...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作