0
点赞
收藏
分享

微信扫一扫

【夯实Redis】Jmeter?限流?        跟着大宇学Redis--------目录帖


一、测试环境

(1) MySQL服务器一台

(2)应用系统

(3)JMeter压力测试工具

测试结果

系统并发数量与响应时间

并发数量

响应时间

10

44ms

50

253ms

100

4.4s

200

29.77s

更多...

系统渐渐无响应

 

        系统在并发量逐渐增加后,系统渐渐不可用,最后变成无响应,可以模拟出线上已经宕机。

        如何才能保护我们的系统,防止在缓存击穿后保护我们的数据库系统呢?

        可以使用限流办法来解决。

二、限流组件

RateLimiter组件

        谷歌的RateLimter组件 能够 每X秒发放N个令牌,只有拿到令牌的线程才能访问接口。

特别注意RateLimiter是单机的,也就是说它无法跨JVM使用。单机部署可以考虑使用。

import com.google.common.util.concurrent.RateLimiter;

@RestController
public class UserController ...
//每秒发放2个令牌,意味着每秒最多有2个线程进入接口
private static RateLimiter rateLimiter = RateLimiter.create(2);

@GetMapping(value = "/get")
public UserDO getById(String id) throws InterruptedException {

if (rateLimiter.tryAcquire()) {
return userService.getById(id);
}

return null;
}

 

举报

相关推荐

0 条评论