博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
请求限流
阅读量:7111 次
发布时间:2019-06-28

本文共 1686 字,大约阅读时间需要 5 分钟。

Map
map = new HashMap<>(); for (int i = 0; i < 100; i++) { map.put("account",IdUtils.genRandomNum(8)); map.put("password",IdUtils.genRandomNum(5)); HttpUtils.sendPost("http://localhost:8087/user/login", map); System.out.println(i); }

于是加一个简单的请求限流 顺便学习相关技能

先引用相关jar包

io.github.forezp
distributed-limit-core
1.0.2

本地限流在配置文件 application.properties 中添加配置

limit.type: local

需要限流的Controller方法上添加注解

@Limit(identifier = "forezp", limtNum = 1, seconds = 5)

完事... 能达到需求了就ok

这里限流针对的是单个请求的简单限流,最好还是针对ip做限流

其他限流方式

令牌桶算法:

说实话没理解...

public class RateLimiterDemo {    private static RateLimiter limiter = RateLimiter.create(5);     public static void exec() {        limiter.acquire(1);        try {            // 处理核心逻辑            TimeUnit.SECONDS.sleep(1);            System.out.println("--" + System.currentTimeMillis() / 1000);        } catch (InterruptedException e) {            e.printStackTrace();        }    }}

漏桶算法示例:

public class CountRateLimiterDemo1 {     private static AtomicInteger count = new AtomicInteger(0);     public static void exec() {        if (count.get() >= 5) {            System.out.println("请求过多!"+System.currentTimeMillis()/1000);        } else {            count.incrementAndGet();            try {                //处理核心逻辑                TimeUnit.SECONDS.sleep(1);                System.out.println("--"+System.currentTimeMillis()/1000);            } catch (InterruptedException e) {                e.printStackTrace();            } finally {                count.decrementAndGet();            }        }    }}

记录下代码,方面下次使用。

详情请阅读原作者:

转载地址:http://qsmhl.baihongyu.com/

你可能感兴趣的文章
Oracle数据库排序后分页慢的问题
查看>>
String.Format方法及参数说明
查看>>
dos延时功能
查看>>
QEMU 4.0.0 发布,几乎可以模拟任何硬件设备的模拟器
查看>>
linux命令 wc
查看>>
Mongodb 3.0+ explain输出参数解析
查看>>
puppet自动化运维之puppet安装篇
查看>>
MSR系列路由器限制某个源MAC只允许访问网关不允许访问外网功能的配置
查看>>
spring定时任务 Cron表达式配置详解
查看>>
asp.net如何实现生成验证码的登录界面
查看>>
请碟仙儿│一个区块链思想实验
查看>>
CMCC频率使用规划
查看>>
系统编程总结
查看>>
文字长度判断,汉字,字母,数字,图片都算作一个长度单位
查看>>
前端知识 | Redux的使用
查看>>
saltstack API
查看>>
python命令行<tab>补全
查看>>
一些常见面试题目
查看>>
Linux系统上银行支付接口php-java-bridge配置
查看>>
Java 深拷贝和浅拷贝
查看>>