Almacenamiento de datos distribuidos y replicados para pequeñas cantidades de datos en Windows

Buscamos una buena solución a un problema de almacenamiento en caché. Nos gustaría distribuir una cantidad relativamente pequeña de datos (quizás decenas de GB) entre un grupo de servidores web de manera que:

  1. Los datos se replican en todos los nodos.
  2. Los datos son persistentes
  3. Se puede acceder a los datos localmente

Nuestra motivación para una solución de almacenamiento en caché es que actualmente tenemos un único punto de falla: una base de datos de SQL Server. Lamentablemente, no podemos configurar un clúster de conmutación por error para esta base de datos. Ya estamos usando Memcached en gran medida, pero queremos evitar el problema de que si un nodo de Memcached falla, de repente tendríamos una gran cantidad de pérdidas de caché y, por lo tanto, experimentaríamos una gran cantidad de solicitudes en un punto final.

En su lugar, preferiríamos tener cachés persistentes locales en cada nodo del servidor web para que la carga resultante se distribuya. Cuando se realiza una recuperación, pasaría por lo siguiente:

  1. Verifique los datos en Memcached. Si no está ahí ...
  2. Verifique los datos en el almacenamiento persistente local. Si no está ahí ...
  3. Recupere datos de la base de datos.

Cuando los datos cambian, la clave de caché se invalida en ambas capas de almacenamiento en caché.

Hemos estado buscando un montón de posibles soluciones, pero ninguna parece coincidir exactamente con lo que necesitamos:

CouchDB

Esto está bastante cerca; el modelo de datos que nos gustaría almacenar en caché está muy orientado a los documentos. Sin embargo, su modelo de replicación no es exactamente lo que estamos buscando. Me parece que la replicacin es un Térmica tienes que realizar en lugar de un permanente relación entre nodos. Puede configurar la replicación continua, pero esto no persiste entre reinicios.

Cassandra

Esta solución parece estar orientada principalmente a aquellos con grandes requisitos de almacenamiento. Tenemos una gran cantidad de usuarios, pero poca cantidad de datos. Cassandra parece poder apoyar n número de nodos de conmutación por error, pero la replicación del 100% entre nodos no parece ser para lo que está destinado; en cambio, parece más orientado únicamente a la distribución.

SAN

Una idea atractiva es que podemos almacenar un montón de archivos en una SAN o un tipo de dispositivo similar. No he trabajado con estos antes, pero parece que todavía sería un punto único de falla; si la SAN deja de funcionar, de repente iríamos a la base de datos para todas las fallas de caché.

Replicación DFS

Una simple búsqueda en Google reveló esto. Parece hacer lo que queremos; sincroniza archivos en todos los nodos de un clúster de replicación. Pero el texto de marketing hace que parezca más un sistema para garantizar que los documentos se copien en diferentes ubicaciones de oficinas. Además, tiene límites, como un recuento máximo de archivos, que no funcionarían bien para nosotros.

¿Alguno de ustedes ha tenido requisitos similares a los nuestros y ha encontrado una buena solución que satisfaga sus necesidades?

preguntado el 16 de mayo de 11 a las 19:05

2 Respuestas

Hemos estado usando Riak con éxito en producción desde hace varios meses por un problema que es algo similar a lo que usted describe. Nosotros también hemos evaluado CouchDB y Cassandra antes.

La ventaja de Riak en este tipo de problemas es que la distribución y la replicación de datos son el núcleo del sistema. Usted define cuántas réplicas de los datos en el clúster desea y se encarga del resto (es un poco más complicado que eso, por supuesto, pero esa es la esencia). Pasamos por la adición de nodos, la eliminación de nodos, el aplastamiento de nodos y ha demostrado ser sorprendentemente resistente.

Es muy parecido a Couch en otros asuntos: orientado a documentos, interfaz REST, Erlang.

contestado el 17 de mayo de 11 a las 11:05

Puede comprobar el hazelcast. No conserva los datos, pero proporciona un sistema de conmutación por error. Cada nodo puede tener varios nodos para hacer una copia de seguridad de sus datos en caso de que un nodo falle.

Respondido el 14 de junio de 11 a las 18:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.