Rapide NIO, asynchrone Serveur HTTP pour Java
Suivantes sur cette question je suis actuellement dans la phase de trouver le bon conteneur HTTP pour un de mes projets, trop. J'ai regardé plusieurs conteneurs, mais je ne sais pas encore qui sera le mieux adapté pour la haute charge uniquement les requêtes AJAX. Apache Mina semble assez prometteur, mais relativement complexe. L'asynchrone serveur web de mise en œuvre appelée AsyncWeb semble avoir été fusionné avec Mina, mais je ne pouvais pas trouver tout de la production relase de, encore. Dans l'autre question, j'ai recommandé la Simple HTTP serveur que j'aime vraiment parce qu'il est... bien simple, claire et propre, mais je ne sais toujours pas si elle tiendrait le but.
En outre, je ne suis pas sûr de traitement de la demande concept de choisir:
- Créer un répartiteur de Thread pour chaque connexion entrante (optimisations pourraient inclure un pool de threads et d'un envoi de file d'attente), c'est faire tout le travail. L'avantage est sans doute, que je n'ai pas de traiter de nombreux problèmes de synchronisation, mais il sera probablement abaisser le débit de charge élevée de façon drastique.
- Parce qu'il va être un très modulaire de l'application d'un "pipeline" (il serait peut-être plus adaptée, je suppose 😉 approche pourrait fonctionner ainsi: Créer un nombre fixe de Threads, chacun pour une certaine tâche.
E. g. l'un pour le traitement de la demande -> un en-tête de la désérialisation (si je reçois d'entrée dans différents formats comme subtmitted Formulaires HTML, XML-Rpc, JSON, etc.) -> un pour le "Contrôleur de Dispatching" (en faisant tout ce que je veux faire avec ces données) -> et un pour la sérialisation de la sortie dans le format souhaité (JSON, XML, HTML, etc...) et de les déplacer à chaque demande, à travers ces niveaux jusqu'à ce qu'il soit terminé. Probablement plus difficile à réaliser mais j'ai un nombre fixe de Threads (le nombre peut dependend sur le matériel) et une séparation des préoccupations.
Des expériences avec tout Cadre qui pourrait s'adapter et les deux différents de traitement des méthodes?
OriginalL'auteur Daff | 2009-07-16
Vous devez vous connecter pour publier un commentaire.
Il y a un exemple sur le Simple HTTP référentiel subversion.
http://simpleweb.svn.sourceforge.net/viewvc/simpleweb/trunk/src/demo/java/org/simpleframework/example/javafx/
Il démontre de marché en temps réel des données à l'aide de la comète et un seul thread d'envoi des mises à jour à n'importe quel nombre de clients. Simple a une transparence de la couche de transport qui prévoit le blocage des I/O de la sémantique avec l'avantage d'envoi asynchrone avec NIO basé autour d'fixe ByteBuffer files d'attente pour chaque client connecté. Ainsi, vous obtenez une surface lisse transparent NIO sortie prévisible de la consommation de mémoire. Aussi des mesures de performances sur les serveurs comme la Jetée de l'émission sur un x2 amélioration de la performance.
http://simpleweb.svn.sourceforge.net/viewvc/simpleweb/trunk/application/Plotter/ApacheBench/ScalabilityApacheBench.png?revision=1448
OriginalL'auteur ng.
Vous pouvez regarder la Jetty, et en particulier, Hightide
Plus précisément, beaucoup de travail a été mis en optimiser l'Embarcadère pour l'AJAX. Voir cette entrée de blog pour plus de détails
Il est intéressant de noter que quelqu'un est en désaccord avec vous et downvoted que, pour une raison quelconque. Pourquoi, je ne sais pas...
OriginalL'auteur Brian Agnew