sql >> Database >  >> NoSQL >> Redis

Redis-replicatie gebruiken op verschillende machines (multimaster)

U vraagt ​​om een ​​Active-Active, ook wel multimaster-oplossing genoemd, maar uw vraag suggereert dat u deze misschien niet nodig hebt.

Als u slechts één van de databases nodig heeft voor schrijfbewerkingen, d.w.z. alle schrijfbewerkingen doen het altijd, dan kunt u dat bereiken met de standaard master-slave-replicatie van Redis. Richt uw toepassing op het gebruik van de master voor schrijfbewerkingen en laat (mogelijk) uw slave ook enkele van de leesbewerkingen uitvoeren. Als de master faalt, promoveer dan de slave in de 2e DC om de nieuwe master te zijn en leid uw applicatie/clients om om deze te gebruiken. Monitoring en promotie kan worden bereikt met Redis' Sentinel.

Er zijn een paar dingen waarmee u rekening moet houden bij het implementeren van dit type installatie. Merk allereerst op dat de replicatie van Redis asynchroon is, dus afhankelijk van de belasting van uw master, het schrijfvolume en de kwaliteit van de netwerkverbinding van de replicatie, kunt u enkele van de recente updates verliezen in het geval van een failover. Ten tweede en over hetzelfde onderwerp kan een inter-DC-netwerkverbinding gevoelig zijn voor beperkte bandbreedte en verhoogde latentie - u moet Redis configureren om dit af te handelen en misschien compressie voor dat verkeer gebruiken (bijvoorbeeld via een SSH-tunnel). Ten slotte, om fouten nauwkeurig te detecteren, moet u ten minste 3 Sentinels op verschillende locaties hebben. Maar ondanks deze uitdagingen is dat allemaal te doen.

Dat gezegd hebbende, een multi-masterconfiguratie waarin schrijfacties willekeurig kunnen worden uitgevoerd tegen elke database, is niet momenteel ondersteund door Redis. Als dat echt is wat je nodig hebt, overweeg dan een andere oplossing te gebruiken.

Opmerking:afhankelijk van uw exacte vereisten, als u kunt garanderen dat schrijven naar verschillende DC's elkaar uitsluiten (d.w.z. elke DC krijgt alleen schrijfacties naar een afzonderlijke subset van sleutels die niet door de andere DC wordt gedeeld), kunt u twee databases gebruiken met een master in elke DC en de slave in de andere.




  1. mongodb nodejs - circulaire structuur omzetten

  2. Express change-sessie elk verzoek

  3. Meteor-app — de DB van een geïmplementeerde app opnieuw instellen

  4. Hoe te pagineren met Mongoose in Node.js?