ratelimitjを用いてapiのストリーム制限を行う

1064 ワード

シーケンス
対外的に発表されたapiは,悪意のある攻撃を防止し,可能な限りシステムを保護するためにフロー制御を行う必要がある.ratelimitjは、redis、hazelcast、inmemoryバージョンに基づく実装スキームを提供する非常に良いオープンソースプロジェクトです.ここではinmemoryバージョンの使用方法を簡単に説明します.
maven


    es.moki.ratelimitj
    ratelimitj-core
    0.4.0.M1


  es.moki.ratelimitj
  ratelimitj-inmemory
  0.4.0.M1


使用
@Component
public class RateLimitService {

    Set 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-inmemory