2009-11-18 7 views
4

J'ai besoin de créer une application web pour la délégation de tâches, de surveiller et de générer des rapports pour une organisation.Quelle architecture .net devrais-je implémenter pour 10 000 utilisateurs simultanés pour une application web?

Je pense à ASP.Net et MVC devrait être l'architecture pour supporter tant d'utilisateurs simultanés. Y a-t-il une autre meilleure architecture que je devrais rechercher?

Quel type de configuration de serveur nécessitera pour contenir cette application? Comment puis-je tester autant d'utilisateurs connectés avant de lancer cette application, y a-t-il des outils de test gratuits/économiques disponibles?

Merci d'avance. anil

+0

10 000 concurrent (simultané) est beaucoup d'utilisateurs! – Rippo

+0

Ce que vous suggérez –

+1

Je pense que Rippo vous demande si vous voulez dire 10 000 utilisateurs au total ou 10 000 utilisateurs qui sont tous connectés et qui travaillent en même temps - c'est ce que signifie «concurrent». Et c'est beaucoup d'utilisateurs. Je pense que vous allez avoir besoin d'un laboratoire sérieux pour simuler 10 000 utilisateurs simultanés. – serialhobbyist

Répondre

4

Le choix de MVC par rapport aux formulaires Web a peu ou rien à voir avec la capacité de l'application à gérer la charge. Vos problèmes seront en lecture/écriture dans la base de données, et cela ne changera pas, peu importe lequel des deux vous choisissez. idées pour améliorer la capacité à gérer la charge:

d'abord et avant tout: le minimum absolu est de deux serveurs: serveur web et serveur DB, ils ne doivent JAMAIS fonctionner sur la même boîte. DB: DB: DB: DB: Des requêtes efficaces vers la base de données, les index dans la base de données, la dénormalisation des tables qui sont beaucoup touchées, CACHE, CACHE CACHE, l'exécution de la DB dans un cluster, et j'ai mentionné CACHING?

Traitement: si vous avez besoin de traitement lourd, faites ceci dans les services Web qui peuvent fonctionner sur des machines séparées des serveurs web afin que vous puissiez l'échelle des (acheter plus de serveurs et de les mettre derrière un équilibreur de charge si nécessaire)

WEB: évite le besoin d'affinité avec le serveur (peu importe le serveur Web desservant un utilisateur donné à un moment donné) cela signifie utiliser DB ou StateServer pour stocker les sessions, synchroniser la MachineKey sur les serveurs.

la décision d'utiliser MVC ou non avoir aucun impact sur la capacité à gérer 10k utilisateurs simultanés, mais il est un énorme avantage à utiliser MVC si vous voulez que le site soit unité testable

rappelez-vous: Les applications sont soit testable ou détestable, votre choix

0

Pour une installation de cette taille, je recommande fortement d'utiliser un fournisseur de mise en cache de mémoire distribuée à placer au-dessus de votre base de données. Je voudrais également suggérer vraiment d'utiliser un ORM qui a construit en support pour le cache de mémoire, comme NHibernate puisque dans une application de cette échelle votre plus gros goulot d'étranglement sera certainement votre base de données.

Vous aurez très probablement besoin d'une webfarm pour ce scénario, si un seul serveur est assez fort pour cela actuellement à un certain moment dans un avenir proche, vous aurez probablement développer une seule boîte, c'est pourquoi il est important d'architecte dans le Le cache distribué d'abord afin que vous puissiez développer votre ferme et ne pas avoir à re-architecturer l'ensemble de votre système.

2

Cache Cache Cache Cache :-) une politique de mise en cache intelligente fera même un serveur aller un long chemin ... à part cela, vous devez savoir où votre goulot d'étranglement sera. Si votre base de données est lourde, vous devrez envisager de mettre à l'échelle votre base de données soit en cluster, soit en partition. Si vous pensez que votre serveur Web est le goulot d'étranglement (par exemple si vous effectuez beaucoup de traitement, comme le traitement d'image ou autre), vous pouvez mettre un équilibreur de charge pour répartir les demandes entre N nombre de serveurs de votre webfarm.

+1

Totalement d'accord. Nous avons réduit la charge du serveur d'environ 80% en ajoutant un mécanisme de mise en cache en couches à nos applications Web. – Patonza

+0

Pouvez-vous suggérer une politique de mise en cache intelligente? –

+0

Cela dépend de la volatilité de vos données. Si les données ne changent pas souvent, mettez-les en cache de façon agressive. Si ce sont des données susceptibles de changer souvent, vous pouvez envisager quelque chose comme SqlDependencyCache pour l'invalider lorsque les données changent –

Questions connexes