Estoy trabajando en un par cliente-servidor donde el cliente multiproceso realiza miles de invocaciones del servidor por segundo y la primera prioridad es lograr una latencia mínima. El rendimiento también debería ser alto. Tanto el cliente como el servidor están escritos en Java, la semántica de comunicación es bastante simple (operaciones put/get).¿Biblioteca de red Java liviana y de baja latencia?
¿Cuál es la mejor biblioteca/marco de red Java para estos requisitos? Los servidores como Tomacat/Jetty parecen ser pesados. Estoy pensando en MINA o Netty, pero no estoy seguro de que estas bibliotecas asíncronas proporcionen una baja latencia estable bajo una gran carga de trabajo.
Estás hablando de "el cliente [..] realiza miles de invocaciones". ¿De verdad solo tienes * one * (o muy pocos clientes)? Los marcos basados en java nio (netty/mina) brillan cuando manejan muchos clientes (conexiones simultáneas), pero eso no significa necesariamente que estos clientes realicen muchas invocaciones. tomcat usa http, mientras que mina/netty está más orientado al uso de tcp directamente. – MartinK
Sí, tengo solo unas pocas aplicaciones cliente y cada aplicación tiene un número relativamente pequeño de subprocesos (~ 20). Entonces, un número total de conexiones no es extremadamente alto. – user1128016
Casi todas las bibliotecas de red sin bloqueo producen una gran cantidad de basura mientras manejan los mensajes. Se vuelve muy difícil estar en tiempo real cuando tienes la interferencia del GC. Sugiero que echen un vistazo a [CoralReactor] (http://www.coralblocks.com/index.php/category/coralreactor/), que produce cero basura. – rdalmeida