Pregunta

Estoy buscando una solución gratuita, de alta disponibilidad y alto rendimiento para almacenar en caché o almacenar datos de sesión .net (para un sitio web de alto tráfico). No quiero usar un db (db es el cuello de botella en el aumento de tráfico).

Hay algunos almacenes clave / valor, pero que yo sepa no admiten objetos .net. Y hay algunas soluciones de almacenamiento en caché distribuidas o replicadas que admiten alta disponibilidad.

Pero, ¿cuál es la mejor manera de almacenar datos de sesión (mejor si se ejecuta en mono)?

EDITAR: Para una alta disponibilidad, tengo que replicar los datos de la sesión de usuario en más de una máquina. Puedo escribir un serializador si es necesario para lograr el mejor método. Las sesiones de usuario contienen objetos estándar necesarios para un sitio de comercio electrónico.

Saludos, Sirmak

¿Fue útil?

Solución

Bueno, puede usar el servidor de estado de sesión que se ejecuta como un servicio de Windows, pero para hacer que funcione en una situación de granja de servidores web, necesitará que uno de los servidores web ejecute el servicio de estado de sesión y los otros servidores web. coordinará con ese único servidor web. Por supuesto, esto es un problema si su servidor web deja de funcionar, lo que está ejecutando el servicio.

Otra opción sería usar memcachd, que es un servidor de estado de sesión de memoria distribuido. Esto es gratis y ya existe un proveedor para .NET para este marco. Es bastante maduro y ha existido por un tiempo.

Si tiene dinero para gastar, entonces el servidor Scale Out podría ser una opción. Sin embargo, me han dicho que, en sitios web a gran escala, la tecnología de escalamiento necesita ser reciclada de vez en cuando.

A la vuelta de la esquina de Microsoft está Velocity, que es el equivalente a .NET de memcached. Esto aún no se ha publicado y no es una tecnología madura.

Deberá elegir la solución que se ajuste a sus requisitos técnicos y financieros.

Otros consejos

Si está hablando de forma gratuita, MySQL es capaz de manejo de gran volumen de tráfico (en el hardware correcto obviamente)

Bueno, primero debe determinar qué está almacenando en la sesión. Hay algunas cosas que simplemente no pueden ser serializadas en absoluto. Sin embargo, puede implementar sus propias rutinas de serialización para objetos relevantes, y almacenarlas de una manera que componga. Por ejemplo, puede internamente a un BinarySerialisation, luego escribir el objeto como una cadena codificada en base64 en una herramienta de almacenamiento en caché (memcached o lo que sea) y recuperarlo.

Pero también, ¿qué tipo de escalabilidad vas a encontrar aquí? ¿Estás intercambiando usuarios entre servidores por solicitud? Si es así, necesitarás un sistema de caché central, o al menos duplicado, al menos.

Si mantendrá a un usuario en el mismo servidor, pero puede tener muchos, entonces no importa, puede usar un proceso externo en la misma máquina para almacenar en la memoria caché.

Creo que necesitarás proporcionar un poco más de información. No estoy familiarizado con ejecutar cosas en mono, (así que solo recomendaría el servicio estatal asp.net), pero supongo que es un proceso de almacenamiento en caché de terceros, como memcached, puede ser bueno.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top