该篇文章内容:

1.实现标题中提到的接口限流

2.使用压测工具jmeter给大家展现验证效果

第一部分,代码的实现

首先是导入依赖包:

        <dependency><groupId>cn.yueshutong</groupId><artifactId>spring-boot-starter-current-limiting</artifactId><version>0.0.1.RELEASE</version></dependency>

然后是application.yml :

current:limiting:#开启全局限流enabled: false#开启注解限流,可使注解失效part-enabled: true#每秒并发量 这里的qps是全局限流开启的时候的值,如果使用注解在注解里设置QPS值qps: 100#开启快速失败,可切换为阻塞fail-fast: true#系统启动保护时间为0initial-delay: 0

然后是写测试接口,使用限流注解标记接口的并发量 QPS :

    @RequestMapping("/testLimit")@CurrentLimiter(QPS = 5)public String testLimit1() throws InterruptedException {//业务处理......return "success";}

@CurrentLimiter(QPS = 5)  这个注解里的QPS =5 就是当前接口的每秒的并发量 。

最后再针对限流的访问做一个返回处理,新建MyCurrentLimitHandler.class :

import cn.yueshutong.springbootstartercurrentlimiting.annotation.CurrentLimiter;
import cn.yueshutong.springbootstartercurrentlimiting.handler.CurrentAspectHandler;
import com.alibaba.fastjson.JSONObject;
import org.aspectj.lang.ProceedingJoinPoint;
import org.springframework.stereotype.Component;/*** @Author : JCccc* @CreateTime : 2020/4/20* @Description :**/
@Component
public class MyCurrentLimitHandler  implements CurrentAspectHandler {@Overridepublic Object around(ProceedingJoinPoint pjp, CurrentLimiter rateLimiter)  {//限流的返回数据可以自己根据需求场景设计JSONObject jsonObject=new JSONObject();jsonObject.put("resultCode",10011);jsonObject.put("msg","接口访问繁忙,休息一下");return jsonObject.toString();}
}

ps: 有兴趣的可以点进源码里面看,其实是我们非常熟悉的注解方式使用AOP的环绕。

第二部分,接口限流测试

我这边使用的是 Apache JMeter 压测工具给大家做个测试(大家不想额外用这种测试工具的话,设置并发QPS=1,然后手速快一点,再配合在接口里面sleep一下,也是能测试的,不过作为东道主,我就用这些专业点的给你们展示),

设置每秒10个并发

调用看下结果:

接口调用成功的返回是 success:

因为限流返回的失败处理是:

整体的结果是:

ps:提前跟小杠们说的 不是代码里设置的每秒5个并发么,为什么成功的才4个?

这个问题不做回应。

好了,这次springboot整合Current-Limiting 实现接口限流 就到此吧,其实看到yml的配置项,是可以设置系统级别的限流,但是该篇不做介绍,这些可以自己调试下就好,都是开箱即用。

ps:

这个限流jar不同版本差异还是存在的,如果是简单的单机使用,就用0.0.1版本即可:

0.0.1.RELEASE:单点限流,注解+全局配置。

0.0.2.RELEASE:结合Redis实现集群限流,使用选举算法选出Master节点。

0.0.3.RELEASE:可自定义规则限流、增加令牌桶算法与漏桶算法的切换,纳秒级并发控制。

0.0.4.RELEASE:解决大规模限流器注册而长时间不使用导致的内存泄漏问题,定时删除过期的限流器对象,秒级。统一线程池管理,并可定义核心线程数。

0.0.5.RELEASE:去掉集群限流器的锁操作,改进令牌桶算法,实现真正的无锁限流。使用享元模式减少大量对象的创建。

0.0.6.RELEASE:使用Lua脚本减少Redis网络请求次数。

0.0.7.RELEASE:从SpringBoot2切换到SpringBoot1.5开发。

0.0.8.RELEASE:修复了0.0.7版本的集群限流失效bug。

Springboot 整合 Current-Limiting 实现接口限流相关推荐

  1. 轻松两步,我在 SpringBoot 服务上实现了接口限流

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! Sentinel是阿里巴巴开源的限流器熔断器,并且带有可视 ...

  2. 亿级流量场景下如何为HTTP接口限流?看完我懂了!!

    这里,我们实现Web接口限流,具体方式为:使用自定义注解封装基于令牌桶限流算法实现接口限流. 不使用注解实现接口限流 搭建项目 这里,我们使用SpringBoot项目来搭建Http接口限流项目,Spr ...

  3. Spring Cloud Alibaba基础教程:使用Sentinel实现接口限流

    点击蓝色"程序猿DD"关注我哟 加个"星标",不忘签到哦 最近管点闲事浪费了不少时间,感谢网友们的留言提醒. 及时纠正路线,继续跟大家一起学习Spring Cl ...

  4. Gateway配合sentinel自定义限流_你知道如何使用阿里Sentinel实现接口限流吗?

    Nacos作为注册中心和配置中心的基础教程,到这里先告一段落,后续与其他结合的内容等讲到的时候再一起拿出来说,不然内容会有点跳跃.接下来我们就来一起学习一下Spring Cloud Alibaba下的 ...

  5. 后端技术:阿里开源的接口限流神器Sentinel介绍

    Sentinel是阿里巴巴开源的限流器熔断器,并且带有可视化操作界面. 在日常开发中,限流功能时常被使用,用于对某些接口进行限流熔断,譬如限制单位时间内接口访问次数:或者按照某种规则进行限流,如限制i ...

  6. 接口限流算法:漏桶算法amp;令牌桶算法

    转载自 接口限流算法:漏桶算法&令牌桶算法 背景 每一个对外提供的API接口都是需要做流量控制的,不然会导致系统直接崩溃.很简单的例子,和保险丝的原理一样,如果用电符合超载就会烧断保险丝断掉电 ...

  7. Redis 做接口限流

    Redis 除了做缓存,还能干很多很多事情:分布式锁.限流.处理请求接口幂等性...太多太多了- 今天想和小伙伴们聊聊用 Redis 处理接口限流,这也是最近的 TienChin 项目涉及到这个知识点 ...

  8. 微服务接口限流的设计与思考(附GitHub框架源码)

    http://www.infoq.com/cn/articles/microservice-interface-rate-limit?useSponsorshipSuggestions=true&am ...

  9. IDEA中进行SpringBoot整合spring-ws开发webservice接口后期要修改xsd文件流程

    场景 SpringBoot整合spring-ws开发webservice接口(全流程详细教程) 参照: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/articl ...

最新文章

  1. 原创 | 工业场景中的预测性维护
  2. 当我们输入一条SQL查询语句时,发生了什么?
  3. Intellij Idea debug 模式如果发现异常,即添加异常断点在发生异常处
  4. MySQL Proxy 安装与读写分离体验
  5. 嵌入式C语言基础链表
  6. 刚入职场的菜鸟,这些大数据知识点,你必须掌握了!
  7. 治病花了130万才明白:不要轻易买保险
  8. 从numpy里加载_PyTorch强化:01.PyTorch 数据加载和处理
  9. Java的transient关键字
  10. Ueditor结合七牛云及百度云存储(JAVA版,ueditor-1.4.3)实现图片文件上传
  11. 北大OJ(POJ 2503)在线翻译
  12. 最简单的零成本创业模式
  13. VS 2010 for SharePoint
  14. iOS 8.0正式公布啦
  15. STM32用于PWM占空比测量
  16. 企业的主数据建设方法论与实践 | 推荐收藏
  17. WORD2003无法打开WORD2000文档解决方法
  18. 绝无仅有!绝无仅有的史上最好shell替代工具
  19. 【沽泡学院07】基于ElasticSearch搜索附近的人
  20. TVbox带会员带推广版本

热门文章

  1. 学习日志-勉励自己-自律
  2. android recovery分区内刷镜像,Android手机Recovery模式取证方法研究.pdf
  3. Hololens开发学习笔记-4
  4. 大部分人朋友圈仅三天可见的原因,竟然是……
  5. Web漏洞扫描工具(批量脱壳、反序列化、CMS)
  6. java18_【Java】Java_18 方法
  7. 猜一宋词名句 Java_古诗词名言名句大全之宋词名句集锦
  8. ElasticSearch系列——Kibana,核心概念
  9. [1061]青蛙的约会
  10. 水晶报表自定义纸张大小打印 (转)