Se você está tentando limitar o acesso à sua API REST baseada em Spring, você deve usar o algoritmo token-bucket.
Existe o projeto bucket4j-spring-boot-starter que usa a biblioteca bucket4j para limitar o acesso à API REST. Você pode configurá-lo por meio do arquivo de propriedades do aplicativo. Existe uma opção para limitar o acesso com base no endereço IP ou nome de usuário.
Se você estiver usando o Netflix Zuul, poderá usar o Spring Cloud Zuul RateLimit, que usa diferentes opções de armazenamento:Consul, Redis, Spring Data e Bucket4j.