Redis
 sql >> Database >  >> NoSQL >> Redis

Cluster Redis/bilanciamento del carico

Prima di tutto puoi cambiare la configurazione di default se lavori poco in

redis-trib.rb

nella funzione def check_create_parameters . È possibile impostare una replica master e una replica slave.

Lo scopo di questa configurazione è la tolleranza agli errori. Gli slave possono essere utilizzati anche per la lettura (READONLY). Nei tre master, gli hashslot sono equamente distribuiti e con un algoritmo di bilanciamento del carico si possono ridistribuire e le chiavi effettive. I passaggi di un possibile algoritmo che distribuisce le chiavi tra i nodi sono (provati da me e funziona come previsto):

  1. Trova la folla di maestri
  2. Ottieni il numero totale di chiavi in ​​loro possesso
  3. Per ogni nodo master memorizza il nome host, la porta e il numero di chiavi
  4. Calcola le chiavi che ogni master deve possedere affinché la distribuzione delle chiavi sia bilanciata (totale chiavi del cluster / numero di master)
  5. Trova quali nodi master devono prendere o dare chiavi e la quantità totale di chiavi che devono dare/prendere
  6. Caratterizzazione dei master come nodi di origine o di destinazione a seconda che ricevano o distribuiscano rispettivamente le chiavi
  7. Inizia la migrazione dal nodo di origine ai nodi di destinazione, prima gli hashslot e poi le chiavi pertinenti e itera finché tutti i master non hanno la stessa quantità di chiavi

Questo algoritmo aiuterà a ridurre al minimo il tempo di risposta. Cosa intendo:

Con tre master il tempo di risposta può essere ridotto al minimo. Se hai una configurazione con un master e questo master contiene ad esempio 30000 #chiavi, il tempo di risposta per ottenere 1000 tasti contemporaneamente è> da una configurazione con 2 master che ne contiene 15000 ciascuno.

Se crei una chiave in master1, se provi a raggiungere (leggere) quella chiave da master2 otterrai un errore MOVED. Quindi, la soluzione è creare un client intelligente che mappa gli hashslot al nodo corrispondente. Pertanto, puoi eliminare la chiave da master2 solo nel caso in cui master2 reindirizzi la tua richiesta al master corretto.

Spero di esserti stato d'aiuto.