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

Redis sentinel vs clustering

Lad os først tale vagtpost.

Sentinel administrerer failover, den konfigurerer ikke Redis til HA. Det er en vigtig sondring. For det andet er det diagram, du postede, faktisk en dårlig opsætning - du ønsker ikke at køre Sentinel på den samme node som de Redis-noder, den administrerer. Når du mister den vært, mister du begge dele.

Med hensyn til "Er det spild af ressourcer?" det afhænger af din use case. Du behøver ikke tre Redis-noder i den opsætning, du behøver kun to. Tre øger din redundans, men er ikke påkrævet. Hvis du har brug for den ekstra redundans, er det ikke spild af ressourcer. Hvis du ikke har brug for redundans, kører du bare en enkelt Redis-instans og kalder det godt - da det ville være "spildt" at køre mere.

En anden grund til at køre to slaver ville være at dele læsninger. Igen, hvis du har brug for det, ville det ikke være spild.

Med hensyn til "Er der en bedre måde at bruge fuld udnyttelse af de tilgængelige ressourcer?" det kan vi ikke svare på, da det er alt for afhængigt af dit specifikke scenarie og kode. Når det er sagt, hvis mængden af ​​data, der skal lagres, er "lille", og kommandohastigheden ikke er overordentlig høj, så husk, at du ikke behøver at dedikere en vært til Redis.

Nu til "Klynger Redis et alternativ til Redis sentinel?". Det afhænger virkelig helt af din brugssituation. Redis Cluster er ikke en HA-løsning - det er en løsning med flere skrivere/større end ram. Hvis dit mål kun er HA, vil det sandsynligvis ikke være passende for dig. Redis Cluster kommer med begrænsninger, især i forbindelse med operationer med flere nøgler, så det er ikke nødvendigvis en ligetil "brug bare klynge"-operation.

Hvis du synes, at det er spild at have tre værter, der kører Redis (og tre, der kører vagtpost), vil du sandsynligvis holde Cluster til at være endnu mere, da det kræver flere ressourcer.

De spørgsmål, du har stillet, er sandsynligvis for brede og meningsbaserede til at overleve som skrevet. Hvis du har et specifikt tilfælde/problem, som du arbejder med, bedes du opdatere med det, så vi kan give specifik assistance og information.

Opdatering for detaljer:

For korrekt failover-styring i dit scenarie ville jeg gå med 3 vagtposter, den ene kører på din JBoss-server. Hvis du har 3 JBoss noder, så tag en på hver. Jeg ville have en Redis-pod (master+slave) på separate noder og lade vagtposten styre failoveren.

Derfra er det et spørgsmål om at tilslutte JBoss/Jedis til at bruge Sentinel til sin informations- og forbindelsesstyring. Da jeg ikke bruger dem, viser en hurtig søgning, at Jedis har support til det, du skal bare konfigurere det korrekt. Nogle eksempler, jeg fandt, er på Looking for a example of Jedis with Sentinel og https://github.com/xetorthio/jedis/issues/725, som taler om JedisSentinelPool er ruten for at bruge en pool.

Når Sentinel udfører en failover, vil klienterne blive afbrudt, og Jedis vil (bør?) håndtere genforbindelsen ved at spørge Sentinels, hvem den nuværende master er.



  1. Cassandra vs. MongoDB:hvilken skal du vælge

  2. Python-databaseprogrammering med MongoDB for begyndere

  3. Fremtrædende træk ved MapReduce – Vigtigheden af ​​MapReduce

  4. Gå gennem alle Mongo-samlinger og udfør forespørgslen