美文网首页springcloud
使用ratelimitj进行api的限流

使用ratelimitj进行api的限流

作者: go4it | 来源:发表于2017-07-30 14:05 被阅读60次

    对外发布的api非常有必要进行流控,防止恶意攻击,从而尽可能地保护系统。ratelimitj是一个非常好的开源项目,提供了基于redis、hazelcast、inmemory版本的实现方案。这里简单演示一下如何使用inmemory版本。

    maven

    <!-- https://mvnrepository.com/artifact/es.moki.ratelimitj/ratelimitj-core -->
    <dependency>
        <groupId>es.moki.ratelimitj</groupId>
        <artifactId>ratelimitj-core</artifactId>
        <version>0.4.0.M1</version>
    </dependency>
    <dependency>
      <groupId>es.moki.ratelimitj</groupId>
      <artifactId>ratelimitj-inmemory</artifactId>
      <version>0.4.0.M1</version>
    </dependency>
    

    使用

    @Component
    public class RateLimitService {
    
        Set<RequestLimitRule> rules = Collections.singleton(RequestLimitRule.of(1, TimeUnit.MINUTES, 50)); // 50 request per minute, per key
        RequestRateLimiter requestRateLimiter = new InMemorySlidingWindowRequestRateLimiter(rules);
    
        public boolean reached(String key){
            return requestRateLimiter.overLimitWhenIncremented(key);
        }
    }
    

    doc

    相关文章

      网友评论

        本文标题:使用ratelimitj进行api的限流

        本文链接:https://www.haomeiwen.com/subject/azohlxtx.html