2010-08-11 4 views
17

Quelle sera la méthode la plus efficace pour préparer une batterie de serveurs Web ASP.NET MVC? Plus important encore, le partage des informations de l'utilisateur actuel (Contexte) et des objets en cache (pas si importants) tels que les éléments de recherche (Etats, Types de rues, comtés, etc.).Création d'une application ASP.NET MVC Web Farm Ready

J'ai entendu parler/lu MemCache mais je n'ai pas vu une manière simple (documentation) sur la façon de l'implémenter et de le tester.

Répondre

21

Demande contexte
Toute demande qui frappe une ferme Web obtient servi par un serveur IIS disponible. Le contexte est créé ici et la requête entière est servie par le même serveur. Donc, le contexte ne devrait pas être un problème. Une requête est un pipeline d'exécution sans état, elle n'a donc pas besoin de partager des données avec d'autres serveurs de quelque manière que ce soit. Il sera servi du début à la fin par la même machine.
Les informations de l'utilisateur sont lues à partir d'un cookie et traitées par le serveur qui répond à la requête. Cela dépend si vous cachez l'objet utilisateur complet quelque part.

session
Si vous utilisez TempData dictionnaire que vous devez être conscient qu'il est stocké dans Session dictionnaire. Dans une batterie de serveurs, cela signifie que vous devez utiliser d'autres moyens que les sessions InProc, car elles ne sont pas partagées entre les serveurs IIS de la batterie. Vous devez configurer d'autres gestionnaires de session qui utilisent une base de données ou d'autres (serveur d'état, etc.).

Cache
Quand il s'agit de cache, c'est une histoire différente. Pour le rendre aussi efficace que possible, le cache devrait également être servi. Par défaut ce n'est pas le cas. Mais en regardant le cache, cela signifie à peine que lorsqu'il n'y a pas de cache, il doit être lu et stocké dans le cache. Ainsi, si un serveur de batterie de serveurs particulier n'a pas d'objet de cache, il le crée. Avec le temps, tout le monde mettrait en cache certaines données partagées utilisées publiquement.
Ou ... Vous pouvez utiliser des bibliothèques comme memcached (comme vous l'avez mentionné) et tirer parti du cache partagé. Il existe plusieurs exemples sur le net comment l'utiliser. Mais ces solutions apportent toutes une surcharge supplémentaire de plusieurs choses (comme le traitement de réseau et de troisième processus et la récupération de données, etc.) si rien d'autre. Le cache par défaut est donc le plus rapide et si vous avez explicitement besoin d'un cache partagé, décidez-en un. Ne partagez pas le cache sauf si c'est vraiment nécessaire.

Questions connexes