Patrones / algoritmos de replicación de datos

7

Tengo una serie de sistemas que necesitan ser distribuidos a un número variable de nodos ( al menos dos, pero más probablemente 8 - 10 ). Por razones de rendimiento, cualquier parte del estado debe mantenerse en la memoria y replicarse en al menos dos nodos, aunque a medida que la demanda aumenta, se puede replicar en más nodos según lo indique el administrador . Desafortunadamente, no podemos comprar redes de datos comerciales que ya son muy buenas en esto.

La pregunta : Suponiendo que el estado es inmutable, ¿cuáles son algunos patrones y / o algoritmos que puedo usar para facilitar este proceso? He suministrado una muestra para facilitar la discusión, pero no estoy atado a esto. ¡De verdad! ... Estoy abierto a elegir una nueva dirección para cumplir con estos requisitos. Si pudiera señalarme imágenes o ejemplos de código que serían muy apreciados.

En su forma actual, uno de los nodos se autopromocionará y organizará quién debe replicar y cuándo ( es decir, el administrador ).

Otras suposiciones:

  • elemento de lista
  • Los sistemas se comunicarán a través de TCP / IP y multidifusión
  • No hay bases de datos
  • Sin transferencia de archivos ... solo matrices de bytes
  • Todos los componentes son actualmente C #, y puedo cambiar casi cualquier cosa
  • La consistencia eventual estará bien

Nota: Me doy cuenta de que este ejemplo no maneja los casos de falla. En este punto pensé que complicaría las cosas en exceso

    
pregunta JoeGeeky 19.12.2011 - 14:16

3 respuestas

2

Creo que no hay transacciones ACID y usted conoce los teoremas BASE y CAP. Lo que entiendo de sus diagramas es que Manager X escanea la fuente Y y la Z objetivo (esto puede aumentar) y facilita la replicación entre los dos. En tal caso, puede utilizar la excelente ZMQ y sus enlaces de C #. Te solucionaría casi todos tus problemas.

De lo contrario, puede usar MongoDB porque es fácil de replicar (MongoDB es un almacén de datos orientado a documentos)

Las cosas pueden ponerse interesantes si desea que la transacción sea segura.

    
respondido por el Ubermensch 19.12.2011 - 15:21
1

Creo que vale la pena considerar el enfoque de caché distribuido.

Microsoft: enlace

Open source memcached: enlace

¿Cuál es el tamaño de los datos que desea replicar?

    
respondido por el Valery 19.12.2011 - 15:15
0

Paxos es un algoritmo que se puede usar para la replicación activa-activa entre múltiples nodos. En la versión (patentada) que usamos, se ha mejorado para que funcione bien en un entorno WAN.

Se observa que la implementación no es trivial, pero parece cumplir con los criterios descritos.

    
respondido por el james creasy 23.04.2013 - 02:20

Lea otras preguntas en las etiquetas