Redis psync

Redis psync

Introduksjon til Redis Replication

Redis er bygget med forskjellige funksjoner for å sikre den høye tilgjengeligheten av forekomstene. Bortsett fra avanserte funksjoner med høy tilgjengelighet som gruppering og Sentinel, er master-replica-replikasjonen tilgjengelig for å konfigurere og bruke med minimal innsats. En master (leder) forekomst kan ha flere følgerforekomster der hver tilhenger er en eksakt kopi av lederinstansen. Hver gang en kopi blir koblet fra sin lederforekomst, prøver den på nytt for å etablere forbindelsen igjen og klone mesteren automatisk.

Som du kan se i den gitte illustrasjonen, når mesteren og kopiene er godt koblet, sender mesteren alle skrivekommandoer og handlingene som endrer masterdatasettet til kopiene asynkront. Denne prosessen er lav latens og ytelsesoptimalisert.

Videre, i tilfelle en master-replica-pause, vil kopier koble seg på nytt og prøve å skaffe seg bare de tapte kommandoene på grunn av frakoblingen. Det kalles delvis synkronisering. I noen tilfeller er ikke delvis synkronisering mulig. Derfor skjer det en full resynkronisering der hovedforekomsten genererer et øyeblikksbilde av dataene, skyver den til kopiene og sender alle kommandoene som påvirker datasettmodifikasjonene.

Psync/Sync -kommandoen

Når kopier kobles til en mester, bruker de PSYNC -kommandoen for å kommunisere med masterforekomsten. I denne delvise synkroniseringsprosessen sender den gitte kopien master replikasjons -ID og forskyvningsverdiene til masterserveren. I mottaksenden brukes disse to informasjonsstykkene til å overføre de trinnvise endringene av datasettet fra masteren til replika -forekomsten.

Kort sagt, Master Replication ID og Offset representerer en eksakt versjon av masterdatasettet. Hver masternode tildeles en unik pseudo-tilfeldig streng som kalles replikasjons-ID. I tillegg holder masteren en forskyvningsverdi som økes for hver del av data som produseres for å bli presset til replikkene.

Som vist i forrige illustrasjon, siden masterdatasettet er endret på grunn av klientens skriver, har replikasjonsforskyvningsverdien endret seg fra 12324 til 15693. Derfor kaller replikaen PSYNC -kommandoen med den oppdaterte forskyvningsverdien.

Syntaks
PSYNC -kommandoen har følgende syntaks:

Psync master_replication_id master_replication_offset

master_replication_id: Dette er den pseudo-tilfeldige strengen generert som representerer et gitt datasett.

master_replication_offset: Forskyvningsverdien som økes per hver del av byte som genereres for å sende til kopiene.

Denne kommandoen returnerer et stykke data og skriver fra mesteren til en replika -forekomst. Kort sagt, PSYNC -kommandoen starter en replikasjonsstrøm fra lederforekomsten til replika -forekomsten som overfører datasettet og klientskrivforespørsler endret fra forrige forskyvning.

Bruk sak - synkroniserer replika med master

La oss starte med et par Redis Server -forekomster i forskjellige porter som 6379 og 6380. Du kan bruke følgende kommando:

Redis-Server --port 6379
Redis-Server --port 6380

Deretter konverterer vi en Redis -forekomst til en kopi ved hjelp av replicaof -kommandoen. Før det må vi koble oss til det forekomsten med Redis-CLI som vist på følgende:

Redis -CLI -p 6380

Nå blir tilkoblingen gjort til Redis Server -forekomsten i gang i 6380 -porten. La oss gjøre dette forekomst til en kopi av den andre Redis -forekomsten som går på port 6379.

Nå kan vi teste om denne forekomsten har blitt en kopi ved å utstede følgende kommando:

Som du ser, vises rollen som en slave for dette tilfellet. La oss kjøre den samme kommandoen mot den andre forekomsten og inspisere:

Det er en hovednode som vist i forrige utgangsvindu.

La oss nøye inspisere hvordan synkroniseringen skjer mellom mester- og slaveforekomstene. For demonstrasjonsformål brukes synkroniseringskommandoen. Det oppfører seg det samme som PSYNC -kommandoen bortsett fra at delvis synkronisering ikke er tillatt.

La oss utstede synkroniseringskommandoen fra kopien.

Nå utsteder vi en skrivekommando til hovedforekomsten via CLI.

Som forventet blir skrivekommandoen overført til kopien umiddelbart etterfulgt av pinger. PSYNC -kommandoen fungerer på samme måte som Sync -kommandoen, men med delvis synkronisering aktivert.

Konklusjon

Oppsummert kommer Redis med forskjellige funksjoner som muliggjør høy tilgjengelighet. Master-replica-mønsteret er en av teknikkene som støttes av Redis for å sikre at minst en forekomst av Redis-serveren er tilgjengelig på et gitt tidspunkt. Hver kopi synkroniseres med sin mester og utsteder PSYNC -kommandoen for å lage en replikasjonsstrøm som overfører det endrede datasettet og skriver forespørslene fra masteren. Som nevnt oppfører PSYNC -kommandoen seg den samme som den gamle synkroniseringskommandoen, men med delvis synkronisering aktivert.