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

Redis aktiv-aktiv replikation

Redis v2.8.3 understøtter ikke multi-master opsætninger. Det virkelige spørgsmål er imidlertid, hvorfor du vil oprette en? Sagt anderledes, hvilken udfordring/problem forsøger du at løse?

Det ser ud til, at den udfordring, du prøver at løse, er, hvordan du reducerer netværksbelastningen (mere om det nedenfor) ved at eliminere over-the-net-læsninger. Da Redis ikke er multi-master (endnu), er den eneste måde at gøre det på ved at opsætte hver app-server med en master og en slave (til den anden master) - dvs. total i alt 4 Redis-forekomster (og to gange RAM).

Det enkle scenarie er, når hver app kun opdaterer en gensidigt eksklusiv delmængde af databasens nøgler. I det scenario kan denne form for opsætning faktisk være gavnlig (i hvert fald på kort sigt). Hvis begge apps derimod kan røre ved alle taster, eller hvis blot én tast er "delt" til skrivning mellem apps, så bliver du nødt til at indbygge låsning/konfliktløsning/osv... logik i dine apps for at konsolidere den lokale master og slaveforskelle (og det kan være lidt af en overkill). I begge tilfælde vil du dog ende med for mange (dvs. mere end 1) genindspilninger, hvilket i det mindste betyder mere admin indsats.

Bemærk også, at ved at placere app og database på den samme server, indstiller du dig selv til næsten en vis skalerbarhedsfejl. Hvad sker der, når du har brug for flere computerressourcer til dine apps eller Redis? Hvordan vil du tilføje endnu en app-server til blandingen?

Hvilket bringer mig tilbage til det faktiske problem, du forsøger at løse - netværksbelastning. Hvorfor er det præcis et problem? Er dine apps så gennemstrømningstunge, eller er netværket så tyndt, at du er villig til at gå så langt? Eller måske er latency det problem, du vil løse? Hvorom alting er, så anbefalede jeg, at du i stedet overvejede et gennemprøvet design, nemlig at adskille Redis fra apps og sætte det på sine egne ressourcer. Sandt nok vil netværket ramme dig i ansigtet, og du bliver nødt til at arbejde rundt/med det (hvilket er, hvad alle andre gør). På den anden side vil du have mere fleksibilitet og kontrol over din meget enklere opsætning, og det er i min bog en kæmpe gevinst.



  1. Tidspunkt for oprettelse af nøgle i redis

  2. Opbygning af en skalerbar proces ved hjælp af NiFi, Kafka og HBase på CDP

  3. Sletning af en nøgle/værdi fra eksisterende MongoDB-indgang

  4. Hvordan får man array fra mongoDB-samlingen?