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