restclient high java count request

high - java restclient



Algoritmo real simple para calcular el número de solicitudes en el último minuto (1)

Mi servicio llama a otro servicio y este otro servicio me regula según la cantidad de solicitudes enviadas durante un minuto (no importa la cantidad por segundo, siempre que haya una <x solicitud en el último minuto)

Me gustaría mostrarle a mi usuario una estimación realmente aproximada de la cantidad de solicitudes realizadas durante el último minuto. No es necesario que sea preciso, de todos modos, es solo una forma de que el usuario vea qué son aproximadamente los números.

¿Cuál sería la mejor forma de implementación de tal contador, la menos exigente en cuanto a la memoria?


Podrías hacer algo como:

  • mantener un int[] requestCount = new int[60]
  • para cada solicitud: requestCount[(System.currentTimeMillis() / 1000) % 60]++;
  • ejecutar un trabajo programado cada 1 segundo para restablecer la posición de matriz "obsoleta" (hace 61 segundos) de nuevo a 0
  • para obtener la cantidad de solicitudes en los últimos 60 segundos: IntStream.of(requestCount).sum();

Nota:

  • esto no sería seguro para hilos. Si necesita seguridad de subprocesos, puede utilizar una matriz final AtomicInteger[] .
  • esto no es robusto para los cambios de reloj, etc.

La huella debería ser bastante pequeña.