2010-08-26 21 views
10

Estoy trabajando en una aplicación web en ASP.NET/C# que debe ser escalable para manejar la alta carga del usuario (probablemente se ejecutará en una granja de servidores web). Dado que atenderá a un gran número de usuarios, alrededor de 1 millón más, pero el número de usuarios en línea sería alrededor de 30K-50K. Voy a utilizar el almacenamiento en caché (proveedor de base), y se preguntaba:Almacenamiento en memoria caché de todos los usuarios en ASP.NET

  1. ¿Es una buena idea para almacenar en caché todos los usuarios por el rendimiento? Planeo guardar en caché todos los demás datos genéricos, como la configuración, etc., pero ¿qué tan eficiente sería almacenar en caché TODOS los usuarios en la memoria? Si un usuario cambia su perfil, volveré a cargar solo ese usuario en particular en el caché (que tiene una colección de todos los usuarios). Alguna sugerencia sobre este enfoque?

  2. ¿Debo preocuparme por el bloqueo cuando uso este caché de usuarios anterior? Solo una edición del perfil sería el usuario mismo, sería una operación atómica, aunque habrá múltiples operaciones de lectura en diferentes hilos. Entonces, mientras obtengo usuarios de la caché o actualizo a un usuario particular, ¿debería usar el bloqueo?

Gracias

Asif

Respuesta

6

Poner cualquier cosa en Global Cache que solo sea útil para un solo usuario suele ser una mala idea y un factor determinante del rendimiento. Optimice sus consultas a la base de datos, y estará en una mejor forma.

Como regla general, solo debe mantener las cosas en el caché que son costosas de obtener de la base de datos, y más de un usuario querrá ver esa información a la vez. Como una lista de los mejores 100 productos o algo así. Pequeñas cantidades de datos que son relativamente baratos de obtener de la base de datos, y que solo son útiles para una sola persona, deberían permanecer donde están.

El almacenamiento en caché aumenta enormemente la complejidad, y más aún en una granja de servidores web. No introduzca una complejidad innecesaria a menos que sea absolutamente necesario. Espere hasta que tenga un problema de rendimiento real antes de intentar resolverlo.

0

usuarios de almacenamiento en caché es probablemente una buena idea. Pero depende de la cantidad de datos que va a almacenar en caché para cada usuario y del costo de recuperar esos datos desde donde se almacenan.

Para bloquear: ¿alguien más puede editar el perfil de un usuario (como un administrador)? ¿Sería eso una ocurrencia común? Si es así, es posible que desee hacer un bloqueo. De lo contrario, si solo el usuario puede editar sus propias cosas, no me molestaría.

Cuestiones relacionadas