Léger et de faible latence Java réseau de la bibliothèque?
Je suis en train de travailler sur un client-serveur paire dont le multithread client effectue des milliers invocations du serveur par seconde et la première priorité est d'atteindre un minimum de latence. Le débit doit être élevé. Le client et le serveur sont écrits en Java, la communication, la sémantique est assez simple (put/get opérations).
Quel est le meilleur Java réseau de la bibliothèque/le cadre de ces exigences? Des serveurs comme Tomacat/Jetty semble être des poids lourds. Je suis en train de réfléchir MINA ou Netty, mais je ne suis pas sûr que ces asynchrone libs va fournir une base stable à faible latence sous la lourde charge de travail.
Oui, j'ai seulement quelques applications client et chaque application dispose d'un relativement petit nombre de threads (~20). Ainsi, un nombre total de connexions n'est pas extrêmement élevé.
Presque tous les non-blocage du réseau des bibliothèques de produire beaucoup de déchets, car ils traitent des messages. Il devient très difficile d'être en temps réel lorsque vous avez la GC interférences. Je vous suggère de prendre un coup d'oeil à CoralReactor, qui produit zéro déchet.
OriginalL'auteur user1128016 | 2012-06-22
Vous devez vous connecter pour publier un commentaire.
Je vous suggère d'essayer de kryonet cadre.
OriginalL'auteur Sergii Zagriichuk
Si vous souhaitez communiquer sur la même machine, vous pouvez essayer quelque chose comme Java Chronique
qui peut soutenir plus d'un million d'persisté messages par seconde, avec la sous-microseconde temps d'aller-retour.
Si vous voulez une faible latence entre les machines, vous avez besoin de regarder très attentivement votre matériel. Pour le matériel de base de votre aller-retour de la latence sera de 100 micro-secondes par plus. Avec le spécialiste du matériel que vous regardant de plus près, à 20 micro-secondes.
Ou vous pouvez communiquer sur la même case et d'obtenir beaucoup plus faible temps de latence. 😉
OriginalL'auteur Peter Lawrey
Vous pouvez également essayer Jocket. Il partage certains concepts avec Java Chronique, mais vise directement le remplacement de la Douille standard de mise en œuvre.
RTT latence est inférieure à la microseconde pour une table de ping-pong entre les processus.
OriginalL'auteur pcdv
Si vous avez besoin d'ultra-haute performance et de débit, je vous recommande d'utiliser les sockets raw (consultez Socket et ServerSocket - il y a peut être une nio version trop). Cela permettra de vous libérer de la surcharge contenues dans HTTP et d'autres protocoles
OriginalL'auteur ControlAltDel