sql >> Databasteknik >  >> NoSQL >> Redis

Redis aktiv-aktiv replikering

Redis v2.8.3 stöder inte multi-master-inställningar. Den verkliga frågan är dock varför du vill sätta upp en? Med andra ord, vilken utmaning/problem försöker du lösa?

Det verkar som att utmaningen du försöker lösa är hur du kan minska nätverksbelastningen (mer om det nedan) genom att eliminera läsningar över nätet. Eftersom Redis inte är multi-master (ännu) är det enda sättet att göra det genom att konfigurera varje appserver med en master och en slav (till den andra mästaren) - dvs totalsumman av 4 Redis-instanser (och två gånger så mycket RAM).

Det enkla scenariot är när varje app bara uppdaterar en ömsesidigt exklusiv delmängd av databasens nycklar. I det scenariot kan denna typ av installation faktiskt vara fördelaktig (åtminstone på kort sikt). Om däremot båda apparna kan röra alla nycklar eller om bara en nyckel "delas" för skrivning mellan apparna, måste du bygga in låsning/konfliktlösning/etc... logik i dina appar för att konsolidera lokal master och slavskillnader (och det kan vara lite överdrivet). I båda fallen kommer du dock att få för många (dvs. fler än 1) omarbetningar, vilket åtminstone innebär mer admininsats.

Observera också att genom att samlokalisera app och databas på samma server ställer du in dig själv för nästan visst skalbarhetsfel. Vad händer när du behöver fler beräkningsresurser för dina appar eller Redis? Hur lägger du till ytterligare en appserver till mixen?

Vilket för mig tillbaka till det faktiska problemet du försöker lösa - nätverksbelastning. Varför är det ett problem egentligen? Är dina appar så genomströmningstunga eller är nätverket så tunt att du är villig att gå så långt? Eller kanske det är latens som du vill lösa? Hur det än är så rekommenderade jag att du istället överväger en beprövad design, nämligen att skilja Redis från apparna och lägga den på sina egna resurser. Det är sant att nätverket slår dig i ansiktet och du måste arbeta runt/med det (vilket är vad alla andra gör). Å andra sidan får du mer flexibilitet och kontroll över din mycket enklare installation och det är enligt min bok en enorm vinst.



  1. Prestandajämförelse för att använda Redis-hashar kontra många nycklar

  2. Uppdatera fält i exakt elementarray i MongoDB

  3. Viloläge med MongoDB

  4. Komma igång med icke-relationella databaser med Mongodb 🍃