Sto lavorando su una coppia client-server in cui il client con multithreading esegue migliaia di richiami del server al secondo e la prima priorità è ottenere una latenza minima. Il rendimento dovrebbe essere alto. Sia il client che il server sono scritti in Java, la semantica della comunicazione è abbastanza semplice (operazioni put/get).Libreria di rete Java leggera e a bassa latenza?
Qual è la migliore libreria/framework di rete Java per questi requisiti? Server come Tomacat/Jetty sembrano essere dei pesi massimi. Sto pensando a MINA o Netty, ma non sono sicuro che queste librerie asincrone forniranno una bassa latenza stabile sotto carico di lavoro pesante.
Si sta parlando di "[..] client esegue migliaia di invocazioni". Hai davvero solo * uno * (o pochissimi clienti)? I framework basati su java nio (netty/mina) brillano quando gestiscono molti client (connessioni simultanee), ma ciò non significa necessariamente che questi client eseguano molte invocazioni. tomcat usa http, mentre mina/netty sono più orientati verso l'uso diretto di tcp. – MartinK
Sì, ho solo alcune applicazioni client e ogni applicazione ha un numero relativamente piccolo di thread (~ 20). Quindi, un numero totale di connessioni non è estremamente alto. – user1128016
Quasi tutte le librerie di rete non bloccanti producono molti rifiuti mentre gestiscono i messaggi. Diventa molto difficile essere in tempo reale quando si ha l'interferenza del GC. Ti suggerisco di dare un'occhiata a [CoralReactor] (http://www.coralblocks.com/index.php/category/coralreactor/), che produce zero rifiuti. – rdalmeida