Redis kan identifiseres som en ekstern ordbokserver som hovedsakelig er designet for hastighet. I tillegg brukes den mye som en hurtigbuffer og NoSQL-database. Som en database eller hurtigbuffer er det viktig å gi en høy frekvens av datatilgang, høy tilgjengelighet, databeskyttelse og skalerbarhetsfunksjoner. Redis introduserte Sentinel og Cluster Solutions for å adressere de nevnte aspektene.
Redis Cluster
Redis Cluster -teknologien som ble introdusert fra versjon 3.0 muliggjør den horisontale skaleringen for en gitt redis -distribusjon. Med Redis -klynger deles dataene over flere klyngeknuter som gir et konsistent og pålitelig datatjenestelag for applikasjoner.
Det er et must å ha minst tre mesternoder for en klynge å fungere ordentlig. I tillegg skal hver masternode ha minst en enkelt slaveknute. Videre muliggjør Redis -klynger høy tilgjengelighet opp til en viss grad ved å fremme en slaveknute tilknyttet en mislykket masterforekomst i en maskinvare/programvare eller nettverksfeil.
Hver klyngeknute kommuniserer med andre noder ved hjelp av en binær protokollbasert node-til-node kommunikasjonskanal. I tillegg er hver node åpen for klientforbindelser ved å bruke standard TCP -port.
Følgende er en skisse på høyt nivå av en grunnleggende Redis-klyngekonfigurasjon:
Fordeler:
Ulemper:
Redis Sentinel
Redis Sentinel er en tilnærming med høy tilgjengelighet for Redis-distribusjoner som kjører som et eget program i bakgrunnen. Det bringer mange funksjoner til Redis -distribusjonene dine ved hele tiden å sjekke statusen for master- og slaveknute, og varsle de betydelige endringene relatert til de overvåkede forekomstene via en API, initialisere den automatiske failover -prosessen når en masterfeil oppstår, og fungerer som en kilde til autoritet for klienter å finne ut den for tiden aktive Redis Master Node IP -adresse.
Et Redis Sentinel -oppsett kan implementeres ved hjelp av minst tre Sentinel -noder som kan unngå de fleste problemene i en gitt Redis -distribusjon. Videre, i en gitt Sentinel -konfigurasjon, definerer quorumverdien minimum antall sentinelknuter som bør bekrefte når en master mislykkes.
Generelt brukes Redis Sentinel først og fremst for å støtte den høye tilgjengeligheten av en Redis -database der den presterer bedre enn i grupperingsmetoden.
Følgende er en illustrasjon på høyt nivå av en minimal Redis Sentinel-konfigurasjon:
Fordeler:
Ulemper:
Redis Sentinel vs Cluster
Redis Cluster og Sentinel er to tilnærminger der hver adresserer forskjellige aspekter relatert til en Redis -distribusjon. For å fremheve, er Redis Cluster -tilnærmingen mer egnet for kompliserte implementeringer som omhandler massive datasett der den gir automatisk data sharding for bedre lese/skrive spørringsytelse, automatisk master failover og replikering med høy tilgjengelighet opp til en viss grad. Videre kan Redis Cluster Nodes skaleres uanstrengt.
På den annen side er Redis Sentinel mer fokusert på mindre implementeringer med høy tilgjengelighet i tankene.
Tilgjengelighet
Redis Cluster støtter ikke helt høy tilgjengelighet. For hvis flertallet av mestrene ikke er tilgjengelige, kan klyngen gå ned. I motsetning til klyngetilnærmingen, tilbyr Redis Sentinel høy tilgjengelighet uten menneskelig innblanding. Det viktigste er at Sentinel kan overleve selv med en enkelt løpende masterinstans når en kritisk feil oppstår.
Data Sharding
Redis Cluster tilbyr sharding -muligheter der dataene er distribuert mellom flere noder når klienter har nettverkstilgang til alle nodene. Det muliggjør økt ytelse og datalagringskapasitet.
På den annen side tilbyr Redis Sentinel ikke sharding -evner. Fordi shardingen forårsaker ubalanseutnyttelsen av mesteren og slaven.
Replikering
Begge tilnærminger tilbyr master replikering med noen begrensninger. Redis Sentinel tillater replikering for flere lag der flere slaveknuter kan replikere fra en gitt masterinstans. I kontrast tillater ikke Redis Cluster -tilnærmingen replikering for flere lag. Det er bare i stand til å gjenskape masterforekomsten til en enkelt slaveknute. Begge tilnærminger går på akkord med konsistensen på grunn av async replikasjon.
Skalerbarhet
Redis -klynger er svært skalerbare. Den støtter opptil tusen noder i et gitt enkelt klyngeoppsett. Videre tillater klynger tilsetning og fjerning av noder dynamisk og uanstrengt. Redis Sentinel er ikke skalerbar og skriver blir rettet mot masterforekomsten, og følgelig er Sentinel ikke i stand til å håndtere leseseparasjonsproblemene.
Arkitektur
En fullt funksjonell Redis Sentinel kan bygges med bare tre noder. Men for å sette opp en Redis -klynge, krever den minst tre masternoder og tre slaver festet til dem, noe som er mer kostbart enn i Redis Sentinel -distribusjon.
Konklusjon
For å oppsummere er Redis Cluster -tilnærmingen mer fokusert på komplekse distribusjoner når høy skalerbarhet, høy ytelse og høy datalagring er viktig og den høye tilgjengeligheten ikke er betydelig. På den annen side er Redis Sentinel først og fremst bygget for enkle applikasjoner som hovedsakelig er fokusert på høy tilgjengelighet. Sammenlignet kommer begge løsningene med sine fordeler og ulemper, men for å støtte sluttbrukerne med mer finjustert redis-distribusjon.