images - Límite de velocidad de una API(Spring MVC)
spring rest return image (2)
Estoy buscando la mejor manera más eficiente de implementar (o usar una configuración ya configurada) un limitador de velocidad que proteja todo mi api url de descanso. la protección que estoy mirando es una "llamada por segundo por usuario limitador"
Eché un vistazo a la red y lo que salió fue el uso de "Redis" o Guava RateLimiter.
Para ser honesto, nunca he usado Redis y realmente no estoy familiarizado con él. Pero al mirar sus documentos parece que tiene un sistema limitador de velocidad bastante robusto.
También he echado un vistazo al RateLimiter de Guava. Y parece un poco más fácil de usar (no necesita una instalación de redis, etc.)
Entonces, ¿quisiera alguna sugerencia de cuál sería "en mi caso" la mejor solución? ¿Está usando Redis "demasiado"? ¿Alguno de ustedes ya probó RateLimter? ¿Es esta una buena solución? escalable?
PD: También estoy pidiendo otra solución que los 2 que he mencionado anteriormente si crees que hay mejores opciones
¡Gracias!
no hay una regla dura, depende totalmente de su situación específica. siempre que "nunca he usado Redis", recomendaría guayaba RateLimiter. compare con redis, un sistema nosql completamente nuevo para usted, es mucho más fácil empezar con guava RateLimiter. al agregar algunas líneas de código, está habilitado para distribuir permisos a una velocidad configurable. lo que queda por hacer es adaptarlo a sus necesidades, como proporcionar un límite de tarifas por usuario.
El RateLimiter de Guava bloquea el hilo actual, por lo que si hay una ráfaga de llamadas asíncronas contra el servicio acelerado, se bloquearán muchos subprocesos y es posible que se dejen de usar subprocesos gratuitos.
Quizás Kite de la biblioteca Spring-based cubra tus necesidades. El "acelerador de velocidad" de Kite rechaza las solicitudes después de que el principal alcanza un límite configurable en el número de solicitudes en un período de tiempo. El limitador de tasa utiliza Spring Security para determinar el principal involucrado.
Pero Kite sigue siendo un enfoque de JVM única. Si necesita un enfoque de cluster, Redis es un camino por recorrer.