Question

Je travaille sur une application Web en Java qui récupère les données des servlets via des appels AJAX.

Cette application comporte plusieurs éléments de page qui extraient rapidement les nouvelles données du serveur.

Avec beaucoup d'utilisateurs, la demande sur le serveur a le potentiel de devenir assez forte, alors je suis curieux:

Quelle approche offre les meilleures performances:

Plusieurs servlets (une pour chaque type de demande de données)?

Ou:

un seul servlet capable de gérer toutes les demandes?

Était-ce utile?

La solution

Il n'y a aucune raison de performance pour avoir plus d'un servlet. Dans une application Web, une seule instance d'une classe de servlet est instanciée, quel que soit le nombre de demandes. Les demandes ne sont pas sérialisées, elles sont traitées simultanément, d'où la nécessité pour votre servlet d'être sécurisé pour les threads.

Autres conseils

Le framework struts utilise un seul servlet pour tout ce qui se trouve dans votre application. Vos affaires se connectent à cette servlet. Si cela fonctionne pour eux, cela fonctionnera probablement pour vous.

Une des raisons possibles de l’utilisation de plusieurs services est que, si vous devez utiliser plusieurs serveurs pour gérer la charge à l’avenir, il est plus facile de déplacer un service séparé sur son propre serveur que de le faire "dans les coulisses". si tout provient d'un service.

Cela étant dit, si vous disposez de plusieurs servlets, vous aurez un temps de maintenance supplémentaire. Vous devez donc équilibrer la flexibilité future avec une facilité de maintenance inférieure.

Il n'y a en tant que tel aucune amélioration des performances dans le cas où vous utilisez plusieurs servlets car, pour chaque requête de servlet, elle est traitée dans un thread séparé, à condition que ce ne soit pas un seul thread.

Mais en gardant la modularité et la séparation du code, vous pouvez avoir plusieurs servlets.

Comme Tony l'a dit, il n'y a vraiment aucune raison d'utiliser plus d'un servlet, à moins que vous n'ayez besoin de diviser une classe de servlets Java complexe ou peut-être d'implémenter un filtre d'interception.

Je suis sûr que vous savez que vous pouvez avoir plusieurs instances du même servlet à condition d'enregistrer différents noeuds dans le fichier web.xml pour votre application, c'est-à-dire en supposant que vous souhaitiez le faire.

En dehors de cela, d'après ce que je comprends, l'architecture de la comète pourrait vous être utile - http://en.wikipedia.org/wiki/Comet_ (programmation) .
Il existe déjà quelques implémentations de Comet sur certains conteneurs de servlets - voici un aperçu de la façon d'utiliser Ajax et Comet - http://www.ibm.com/developerworks/java/library/j-jettydwr/ . Vous devez étudier avant de choisir votre architecture.

BR,
~ A

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top