RateLimiter配合ConcurrentHashMap对用户进行简单限流
发布日期:2021-04-30 21:10:02 浏览次数:113 分类:精选文章

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

RateLimiter ? ConcurrentHashMap ?????

????????????RateLimiter ? Guava ????????????????????? ConcurrentHashMap??????????????????????????????????

????????

RateLimiter ???????????????????????????????????????????????????????????????????????????????????????????????????????????

ConcurrentHashMap ???

ConcurrentHashMap ???????? HashMap ?????????????????????????????????????????????????????????????

?????????

??????????????????????

  • ?? ConcurrentHashMap ??

    ? Controller ??????? ConcurrentHashMap ????????????????

    private final static Map
    outMoneyLimitMap = new ConcurrentHashMap<>();
  • ??????

    ??????????????? ID ? ConcurrentHashMap ?????? RateLimiter??????????????????????????????

    public ModelAndView submitOut() {
    RateLimiter rateLimiter = null;
    if (!outMoneyLimitMap.containsKey(uid)) {
    logger.debug("???uid");
    rateLimiter = RateLimiter.create(0.1);
    outMoneyLimitMap.put(uid, rateLimiter);
    } else {
    logger.debug("????uid");
    rateLimiter = outMoneyLimitMap.get(uid);
    }
    if (!rateLimiter.tryAcquire()) {
    throw new OrderException("??????");
    }
    // ??????
  • ?????????

    ?? RateLimiter.create() ??????????????????????????0.1 ??? 10 ???????????

    rateLimiter = RateLimiter.create(0.1);
  • ?????????

    ?? rateLimiter.tryAcquire() ???????????????????????????????????????????????????????

  • ???????

    ?????????????????????????????????????????????????????????????????????????? 0.1 ?????????????

    ???? RateLimiter ? ConcurrentHashMap??????????????????????????????????

    上一篇:代码天敌之体积
    下一篇:36岁程序员应聘被公司领导直接拒绝,网友不淡定了....TM...

    发表评论

    最新留言

    关注你微信了!
    [***.104.42.241]2026年05月27日 19时31分45秒