【夯实Redis】Jmeter?限流?

一、测试环境

(1) MySQL服务器一台

(2)应用系统

(3)JMeter压力测试工具

测试结果

系统并发数量与响应时间
并发数量响应时间
1044ms
50253ms
1004.4s
20029.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;
    }

 

阅读更多 

        跟着大宇学Redis--------目录帖

posted @ 2022-07-17 12:13  小大宇  阅读(25)  评论(0编辑  收藏  举报