1

Je suis intéressé par l'exécution d'environ 50 requêtes HTTP/seconde à partir d'une seule machine. Je ne me soucie pas tellement de la latence mais je me soucie du débit. J'essaie de décider si utiliser Apache HttpAsyncClient ou utiliser Netty. Quelqu'un pourrait-il faire la lumière sur les avantages de chacun concernant mon problème?Client HTTP pour le débit - Netty vs Apache HttpAsyncClient

J'ai trouvé ce comparison mais j'espérais une explication un peu plus détaillée sur lequel est le meilleur et pour quel cas d'utilisation. Aussi, la comparaison signifie-t-elle que l'utilisation du client HTTP apache synchrone avec 200 threads soit meilleure que les autres options? Pas 200 threads un peu trop (en supposant que j'utilise un ordinateur normal avec 4 cœurs, 2 threads par core et 12 Go de RAM)?

Merci à l'avance

+0

Le problème principal avec ces benchmarks est que dans la vraie vie vous avez plus de threads et beaucoup plus de bruit, donc vous ne pouvez pas vraiment obtenir des résultats similaires en production sauf si vous optez pour l'option asynchrone . Vous cherchez à obtenir plus de débit, et comme prévu, Netty gagne beaucoup de temps dans son benchmark. Nous utilisons Netty avec beaucoup de succès pour un large éventail d'applications, et cela ne nous manque jamais. Vous pouvez utiliser ning async-http-client, et vous n'avez pas besoin de tout implémenter par vous-même - https://github.com/AsyncHttpClient/async-http-client. J'espère que cela aide –

+0

@EranHarel ça aide beaucoup. Avez-vous déjà comparé le client async d'Apache à celui du ning? – Gideon

+0

Nous obtenons un meilleur débit en utilisant ning dans nos cas d'utilisation. Vous devriez le tester vous-même bien sûr. Ne faites pas confiance à un post aléatoire sur Internet, ou le mot d'un mec au hasard sur StackOverflow;) –

Répondre

4

Le principal problème avec ces critères est que dans la vie réelle, vous avez plus de fils et beaucoup plus de bruit, de sorte que vous ne pouvez pas vraiment attendre pour obtenir des résultats similaires dans la production à moins que vous allez pour la async Option d'E/S

Vous cherchez à obtenir plus débit, et comme prévu les clients basés sur Netty gagne beaucoup de temps dans leur indice de référence. Donc, c'est probablement votre meilleur pari.

Nous utilisons Netty avec beaucoup de succès pour un large éventail d'applications, et cela ne nous manque jamais. Vous pouvez utiliser ning async-http-client, et vous n'avez pas besoin d'implémenter un client tout seul. Notez toutefois, comme je l'ai indiqué dans les commentaires, que je base ma réponse sur mon expérience personnelle et sur nos métriques de production. Ne croyez jamais un post de référence aléatoire affiché sur Internet, ni une réponse StackOverflow. Testez-le vous-même;)