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

阅读 103

2022-07-18


一、测试环境

(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)

0 0 举报