sql >> Databasteknik >  >> NoSQL >> Redis

Redis sentinel vs clustering

Låt oss först prata vaktpost.

Sentinel hanterar failover, den konfigurerar inte Redis för HA. Det är en viktig distinktion. För det andra är diagrammet du postade faktiskt en dålig installation - du vill inte köra Sentinel på samma nod som Redis-noderna den hanterar. När du tappar värden förlorar du båda.

När det gäller "Är det slöseri med resurser?" det beror på ditt användningsfall. Du behöver inte tre Redis-noder i den inställningen, du behöver bara två. Tre ökar din redundans, men krävs inte. Om du behöver den extra redundansen är det inte slöseri med resurser. Om du inte behöver redundans kör du bara en enda Redis-instans och kallar det bra - eftersom att köra mer skulle vara "bortkastat".

En annan anledning till att köra två slavar skulle vara att dela läsningar. Återigen, om du behöver det skulle det inte vara slöseri.

När det gäller "Finns det ett bättre sätt att utnyttja de tillgängliga resurserna fullt ut?" vi kan inte svara på det eftersom det är alldeles för beroende av ditt specifika scenario och kod. Som sagt, om mängden data att lagra är "liten" och kommandohastigheten inte är särskilt hög, kom ihåg att du inte behöver dedikera en värd till Redis.

Nu till "Är Redis kluster ett alternativ till Redis sentinel?". Det beror verkligen helt på ditt användningsfall. Redis Cluster är inte en HA-lösning - det är en lösning med flera skrivare/större än ram. Om ditt mål bara är HA kommer det troligen inte att vara lämpligt för dig. Redis Cluster kommer med begränsningar, särskilt kring operationer med flera nyckel, så det är inte nödvändigtvis en enkel "använd bara kluster"-operation.

Om du tycker att det är slösaktigt att ha tre värdar som kör Redis (och tre som kör sentinel) kommer du troligtvis att hålla Cluster ännu mer eftersom det kräver mer resurser.

Frågorna du har ställt är förmodligen för breda och opinionsbaserade för att överleva som skrivna. Om du har ett specifikt fall/problem som du arbetar med, uppdatera gärna med det så att vi kan ge specifik hjälp och information.

Uppdatering för detaljer:

För korrekt failover-hantering i ditt scenario skulle jag gå med 3 sentinels, en körs på din JBoss-server. Om du har 3 JBoss-noder, gå med en på varje. Jag skulle ha en Redis-pod (master+slav) på separata noder och låta sentinel hantera failover.

Därifrån gäller det att koppla upp JBoss/Jedis för att använda Sentinel för sin informations- och anslutningshantering. Eftersom jag inte använder dem visar en snabb sökning att Jedis har stöd för det, du behöver bara konfigurera det korrekt. Några exempel jag hittade är på Letar du efter ett exempel på Jedis med Sentinel och https://github.com/xetorthio/jedis/issues/725 som talar om JedisSentinelPool är vägen för att använda en pool.

När Sentinel kör en failover kommer klienterna att kopplas bort och Jedis kommer (ska?) hantera återanslutningen genom att fråga Sentinels vem den nuvarande mastern är.



  1. Enkel inloggningssida i nodejs med hjälp av express och pass med mongodb

  2. Jest och Redis (enhet testar problem med databascache)

  3. Att använda findOne i en loop tar för lång tid i Node.js

  4. Hur man skapar Mongoose Schema med en rad objekt-ID:n?