Domanda

  1. Qualcuno sa la differenza tra replica Redis Redis e sharding?
  2. Cosa stanno utilizzare per? Redis memorizza i dati in memoria, in che modo incide la replicazione / sharding?
  3. E 'possibile utilizzare tutti e due insieme?

Grazie!

È stato utile?

Soluzione

Sharding è quasi l'antitesi di replica, anche se sono concetti ortogonali e lavorare bene insieme.

Sharding, noto anche come partizionamento, sta dividendo i dati dalla chiave; Durante la replica, anche conosciuto come mirroring, è quello di copiare tutti i dati.

Sharding è utile per aumentare le prestazioni, riducendo il carico di colpo e di memoria su qualsiasi risorsa. La replica è utile per l'elevata disponibilità di legge. Se si legge da più repliche, sarà anche ridurre il tasso di successo su tutte le risorse, ma il requisito di memoria per tutte le risorse rimane la stessa. Va notato che, mentre è possibile scrivere ad uno schiavo, la replica è master-> schiava solo. Così non si può scalare le scritture in questo modo.

Si supponga di avere le seguenti tuple: [1: Apple], [2: Banana], [3: Cherry], [4: Durian] e abbiamo due macchine A e B. Con Sharding, potremmo memorizzare le chiavi 2 , 4 sulla macchina a; e le chiavi di 1,3 sulla macchina B. Con la replica, si memorizzano i tasti 1,2,3,4 sulla macchina A e 1,2,3,4 sulla macchina B.

Sharding è tipicamente implementato eseguendo un hash coerente sulla chiave. L'esempio di cui sopra è stato realizzato con la seguente funzione hash h (x) {return x% 2 == 0 A: B}.

Per combinare i concetti, potremmo replicare ogni frammento. Nei casi di cui sopra, tutti i dati (2,4) della macchina A potrebbe essere riprodotto sulla macchina C e tutti i dati (1,3) della macchina B potrebbe essere riprodotto sul computer D.

Qualsiasi negozio di valori-chiave (di cui Redis è solo un esempio) supporta sharding, anche se alcune funzioni cross-chiave non funzioneranno più. Redis supporta la replica fuori dalla scatola.

Altri suggerimenti

In parole semplici, la differenza fondamentale tra i due concetti è che Sharding viene usato per scalare scritture mentre replica è utilizzato in scala Legge. Come già accennato Alex, replica è anche una delle soluzioni per raggiungere HA.

Sì, entrambi sono in genere utilizzati insieme, se si considera come frammenti possono essere replicati tra i nodi di un cluster.

Per quanto riguarda la terza domanda, anziché l'opzione RAM-filo, è una migliore idea di utilizzare il Redis Append Only file (AOF). A solo un costo minore (in termini di velocità di scrittura), si ottiene molto di più l'affidabilità delle operazioni di scrittura. E 'abbastanza come il log binario mysql. Il 1 fsync / secondo è l'opzione consigliata per l'uso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top