2010-08-11 21 views
17

Cuál será la forma más eficiente de preparar una granja de servidores de la aplicación ASP.NET MVC.Crear una aplicación ASP.NET MVC Web Farm Ready

Lo más importante es compartir la información del usuario actual (Contexto) y (no tan importante) los objetos almacenados en caché, como elementos de búsqueda (Estados, tipos de calles, condados, etc.).

He escuchado/leído MemCache pero no he visto una forma sencilla aplicable (documentación) sobre cómo implementarlo y probarlo.

Respuesta

21

Solicitud contexto
Cualquier solicitud que realiza un conjunto de servidores Web obtiene servido por un servidor IIS disponible. El contexto se crea allí y toda la solicitud recibe el servicio del mismo servidor. Entonces el contexto no debería ser un problema. Una solicitud es una canalización de ejecución sin estado, por lo que no necesita compartir datos con otros servidores de ninguna forma o forma. Será servido desde el principio hasta el final por la misma máquina.
La información del usuario se lee de una cookie y es procesada por el servidor que atiende la solicitud. Depende entonces si almacena en caché el objeto de usuario completo en alguna parte.

Sesión
Si utiliza TempData diccionario que debe ser consciente de que está almacenado en el interior Session diccionario. En una granja de servidores, eso significa que debe usar otros medios que las sesiones InProc, ya que no se comparten entre los servidores IIS en toda la granja. Debe configurar otros administradores de sesión que utilicen un DB u otros (servidor de estado, etc.).

caché
Cuando se trata de almacenar en caché es una historia diferente. Para que sea lo más eficiente posible, la memoria caché también debe ser servida. Por defecto no lo es. Pero mirar el caché apenas significa que cuando no hay memoria caché debe leerse y almacenarse en el caché. Entonces, si un servidor de granja de servidores particular no tiene algún objeto de caché, lo crearía. Con el tiempo, todos almacenarían en caché algunos datos compartidos utilizados públicamente.
O ... Puede usar bibliotecas como memcached (como lo mencionó) y aprovechar la memoria caché compartida. Hay varios ejemplos en la red sobre cómo usarlo.

Pero todas estas soluciones añaden una sobrecarga adicional de varias cosas (como la red y el procesamiento de terceros procesos y obtención de datos, etc.) si nada más. Por lo tanto, la caché predeterminada es la más rápida y, si necesita explícitamente la caché compartida, decida por una. No comparta el caché a menos que sea realmente necesario.

Cuestiones relacionadas