Pattern / algoritmi di replica dei dati

7

Ho una serie di sistemi che devono essere distribuiti a un numero variabile di nodi ( almeno due, ma più probabilmente 8 - 10 ). Per motivi di prestazioni, ogni singolo stato deve essere mantenuto in memoria e replicato su almeno due nodi, sebbene con l'aumento della domanda questo possa essere replicato su più nodi come richiesto dal gestore . Sfortunatamente, non possiamo acquistare griglie di dati commerciali che sono già molto buone in questo.

La domanda : supponendo che lo stato sia immutabile, quali sono alcuni schemi e / o algoritmi che posso utilizzare per facilitare questo processo? Ho fornito un esempio per facilitare la discussione, ma non sono legato a questo. Davvero! ... Sono spalancato sulla scelta di una nuova direzione per soddisfare questi requisiti. Se potessi indicarmi foto o esempi di codice che sarebbero molto apprezzati.

Allo stato attuale, uno dei nodi si auto-promuoverà e orchestrerà chi dovrebbe replicare e quando ( cioè il gestore ).

Altre ipotesi:

  • Elemento dell'elenco
  • I sistemi comunicano tramite TCP / IP e Multicast
  • Nessun database
  • Nessun trasferimento di file ... solo array di byte
  • Tutti i componenti sono attualmente in C # e posso cambiare quasi tutto
  • La coerenza finale andrà bene

Nota: mi rendo conto che questo esempio non gestisce i casi di errore. A questo punto ho pensato che avrebbe complicato troppo le cose

    
posta JoeGeeky 19.12.2011 - 14:16
fonte

3 risposte

2

Credo che non ci siano transazioni ACID e che tu sia a conoscenza dei teoremi BASE e CAP. Quello che capisco dai tuoi diagrammi è che il Manager X analizza la sorgente Y e la Z target (questo può aumentare) e facilita la replicazione tra i due. In tal caso, puoi utilizzare l'eccellente libreria ZMQ e le sue associazioni C #. Ti risolverebbe quasi tutti i tuoi problemi.

Altrimenti puoi usare MongoDB perché sia facile da replicare (MongoDB è un archivio dati orientato ai documenti)

Le cose potrebbero diventare interessanti se si vuole essere sicuri per le transazioni.

    
risposta data 19.12.2011 - 15:21
fonte
1

Penso che valga la pena considerare l'approccio alla cache distribuita.

Microsoft: link

Memoria cache open source: link

Qual è la dimensione dei dati che si desidera replicare?

    
risposta data 19.12.2011 - 15:15
fonte
0

Paxos è un algoritmo che può essere utilizzato per la replica active-active tra più nodi. Nella versione (brevettata) che usiamo, è stata migliorata per funzionare bene in un ambiente WAN.

L'implementazione è considerata non banale, ma sembra soddisfare i criteri descritti.

    
risposta data 23.04.2013 - 02:20
fonte

Leggi altre domande sui tag