Ejecucion asincrona usando el framework java.util.concurrent

Siguiendo con el diseño de aplicaciones de alto rendimiento vamos a ver como se podría mejorar el rendimiento de la siguiente parte del gráfico general

 

donde vemos que hay una librería (cliente) que se integra en otra aplicación. Lo fundamental en este caso es que la librería cliente no penalice, o penalice lo menos posible, el tiempo de ejecución de la aplicación original. Por ejemplo si el cliente es una librería de trazas lo idoneo es que el tiempo de ejecución del método de la aplicación sea el mismo con las trazas activadas que con las trazas desactivadas.

Si partimos de este esquema y aplicando las dos siguientes premisas

  • No es importante la garantía de entrega.
  • No es requisito procesar la respuesta de la petición realizada para hacer lógica sobre el programa principal.

Podemos hace uso del framework java.util.concurrent para mejorar mucho el tiempo. Pasando de ejecutar 10000 envios en 60 degundos a 10000 envios en  menos de 1 segundo. Es decir mejoramos la sensación del rendimiento al usar la librería cliente en un x100, que es uno de los objetivos que pretendíamos.

Un par de snippets de como hacer una petición rest desde un cliente usando esta técnica

donde vemos como se realizaría la petición de manera sincrona.

donde vemos como se realizar la petición asincrona

00

More Blog Entries

0 Comments