Delen via


Azure Managed Redis-architectuur

Azure Managed Redis wordt uitgevoerd op de Redis Enterprise-stack , die aanzienlijke voordelen biedt ten opzichte van de communityversie van Redis. De volgende informatie bevat meer informatie over hoe Azure Managed Redis is ontworpen, inclusief informatie die nuttig kan zijn voor hoofdgebruikers.

Vergelijking met Azure Cache voor Redis

De Basic-, Standard- en Premium-lagen van Azure Cache voor Redis zijn gebouwd op de communityversie van Redis. Deze communityversie van Redis heeft verschillende belangrijke beperkingen, waaronder één thread. Dit vermindert de prestaties aanzienlijk en maakt schalen minder efficiënt omdat er niet volledig gebruik wordt gemaakt van vCPU's door de service. Een typisch Azure Cache voor Redis exemplaar maakt gebruik van een architectuur zoals deze:

Diagram van de architectuur van het Azure Cache voor Redis-aanbod.

U ziet dat twee VIRTUELE machines worden gebruikt: een primaire en een replica. Deze VM's worden ook wel 'knooppunten' genoemd. Het primaire knooppunt bevat het belangrijkste Redis-proces en accepteert alle schrijfbewerkingen. Replicatie wordt asynchroon uitgevoerd naar het replicaknooppunt om een back-upkopie beschikbaar te stellen tijdens onderhoud, uitbreiding of onverwachte storingen. Elk knooppunt kan slechts één Redis-serverproces uitvoeren vanwege het ontwerp met één thread van community Redis.

Verbeteringen in de architectuur van Azure Managed Redis

Azure Managed Redis maakt gebruik van een geavanceerdere architectuur die er ongeveer als volgt uitziet:

Diagram met de architectuur van de Azure Managed Redis-aanbieding.

Er zijn verschillende verschillen:

  • Elke virtuele machine (of knooppunt) voert meerdere Redis-serverprocessen (ook wel 'shards' genoemd) parallel uit. Meerdere shards zorgen voor efficiënter gebruik van vCPU's op elke virtuele machine en hogere prestaties.
  • Niet alle primaire Redis-shards bevinden zich op dezelfde VM/hetzelfde knooppunt. In plaats daarvan worden primaire en replica-shards verdeeld over beide knooppunten. Omdat primaire shards meer CPU-resources gebruiken dan replica-shards, kunnen met deze benadering meer primaire shards parallel worden uitgevoerd.
  • Elk knooppunt heeft een proxyproces met hoge prestaties voor het beheren van de shards, het afhandelen van verbindingsbeheer en het activeren van zelfherstel.

Deze architectuur maakt zowel hogere prestaties als geavanceerde functies mogelijk, zoals actieve geo-replicatie

Clustervorming

Elk beheerd Redis-exemplaar van Azure is intern geconfigureerd voor het gebruik van clustering in alle lagen en SKU's. Azure Managed Redis is gebaseerd op Redis Enterprise, dat meerdere shards per knooppunt kan gebruiken. Dit omvat kleinere exemplaren die alleen zijn ingesteld voor het gebruik van één shard. Clustering is een manier om de gegevens in het Redis-exemplaar te verdelen over de meerdere Redis-processen, ook wel 'sharding' genoemd. Azure Managed Redis biedt drie clusterbeleidsregels die bepalen welk protocol beschikbaar is voor Redis-clients om verbinding te maken met het cache-exemplaar.

Clusterbeleid

Azure Managed Redis biedt drie clusteringbeleidsregels: OSS, Enterprise en Niet-geclusterd (preview). OSS-clusterbeleid wordt aanbevolen voor de meeste toepassingen omdat het hogere maximale doorvoer ondersteunt, maar er zijn voor- en nadelen voor elke versie.

Het OSS-clusteringbeleid implementeert dezelfde Redis-cluster-API als Azure Cache voor Redis-lagen. Met de Redis-cluster-API kan de Redis-client rechtstreeks verbinding maken met shards op elk Redis-knooppunt, waardoor latentie wordt geminimaliseerd en netwerkdoorvoer wordt geoptimaliseerd, zodat doorvoer bijna lineair kan worden geschaald naarmate het aantal shards en vCPU's toeneemt. Het OSS-clusteringbeleid biedt over het algemeen de beste latentie en doorvoerprestaties. Het OSS-clusterbeleid vereist echter dat uw clientbibliotheek ondersteuning biedt voor de Redis-cluster-API. Tegenwoordig ondersteunen bijna alle Redis-clients de Redis-cluster-API, maar compatibiliteit kan een probleem zijn voor oudere clientversies of gespecialiseerde bibliotheken.

OSS-clusteringbeleid kan niet worden gebruikt met de RediSearch-module.

Voor het OSS-clusteringprotocol moet de client de juiste shardverbindingen maken. De eerste verbinding verloopt via poort 10000. Verbinding maken met afzonderlijke knooppunten wordt uitgevoerd met behulp van poorten in het bereik 85XX. De 85xx-poorten kunnen na verloop van tijd veranderen en mogen niet in uw toepassing worden vastgelegd. Redis-clients die clustering ondersteunen, gebruiken de opdracht CLUSTERKNOOPPUNTen om de exacte poorten te bepalen die worden gebruikt voor de primaire en replica-shards en om de shardverbindingen voor u te maken.

Het clusteringbeleid voor ondernemingen is een eenvoudigere configuratie die gebruikmaakt van één eindpunt voor alle clientverbindingen. Het gebruik van het Enterprise clusterbeleid stuurt alle aanvragen naar één enkel Redis-knooppunt dat vervolgens als proxy wordt gebruikt en die intern verzoeken naar het juiste knooppunt in het cluster doorstuurt. Het voordeel van deze aanpak is dat Azure Managed Redis er niet-geclusterd voor gebruikers uitziet. Dat betekent dat Redis-clientbibliotheken geen ondersteuning hoeven te bieden voor Redis Clustering om enkele prestatievoordelen van Redis Enterprise te verkrijgen. Het gebruik van één eindpunt verhoogt de compatibiliteit met eerdere versies en maakt de verbinding eenvoudiger. Het nadeel is dat de proxy met één knooppunt een knelpunt kan zijn in het rekengebruik of de netwerkdoorvoer.

Het clusteringbeleid voor ondernemingen is de enige die kan worden gebruikt met de RediSearch-module. Hoewel het enterprise-clusterbeleid ervoor zorgt dat een azure Managed Redis-exemplaar niet is geclusterd voor gebruikers, heeft het nog steeds enkele beperkingen met opdrachten met meerdere sleutels.

Het clusteringbeleid voor niet-geclusterde (preview) slaat gegevens op elk knooppunt op zonder sharding. Dit geldt alleen voor caches van 25 GB en kleiner. Scenario's voor het gebruik van niet-geclusterd clusteringbeleid (preview) zijn onder andere:

  • Wanneer u migreert vanuit een Redis-omgeving die niet is geshard. Bijvoorbeeld de niet-gefragmenteerde topologieën van Basic, Standard en Premium SKU's van Azure Cache voor Redis.
  • Bij het uitvoerig uitvoeren van cross-slot-opdrachten en het verdelen van gegevens in shards zouden er fouten optreden. Bijvoorbeeld de MULTI-opdrachten.
  • Wanneer u Redis gebruikt als berichtbroker en geen sharding nodig hebt.

De overwegingen voor het gebruik van niet-geclusterd (preview)-beleid zijn:

  • Dit geldt alleen voor Azure Managed Redis-lagen die kleiner zijn dan of gelijk zijn aan 25 GB.
  • Het is niet zo goed als andere clusteringbeleidsregels, omdat CPU's alleen meerdere threads met Redis Enterprise-software kunnen gebruiken wanneer de cache is geshard.
  • Als u de Azure Managed Redis-cache wilt opschalen, moet u eerst het clusterbeleid wijzigen.
  • Als u overstapt van een Basic-, Standard- of Premium-topologie zonder cluster, kunt u OSS-clusters gebruiken om de prestaties te verbeteren. Niet-geclusterde configuraties mogen alleen worden gebruikt als de toepassing geen ondersteuning biedt voor OSS- of Enterprise-topologieën.

Uitschalen of knooppunten toevoegen

De kernsoftware van Redis Enterprise kan omhoog schalen (met behulp van grotere VM's) of uitschalen (door meer knooppunten/VM's toe te voegen). Uiteindelijk bereikt een schaalactie hetzelfde: meer geheugen, meer vCPU's en meer shards toevoegen. Vanwege deze redundantie biedt Azure Managed Redis niet de mogelijkheid om het specifieke aantal knooppunten te beheren dat in elke configuratie wordt gebruikt. Deze implementatiedetails worden geabstraheerd voor de gebruiker om verwarring, complexiteit en suboptimale configuraties te voorkomen. In plaats daarvan is elke SKU ontworpen met een knooppuntconfiguratie om vCPU's en geheugen te maximaliseren. Sommige SKU's van Azure Managed Redis gebruiken slechts twee knooppunten, terwijl er meer worden gebruikt.

Multisleutelopdrachten

Omdat Azure Managed Redis-exemplaren zijn ontworpen met een geclusterde configuratie, ziet CROSSSLOT u mogelijk uitzonderingen op opdrachten die op meerdere sleutels werken. Het gedrag varieert afhankelijk van het gebruikte clusterbeleid. Als u het OSS-clusterbeleid gebruikt, vereisen multi-sleutelopdrachten dat alle sleutels worden toegewezen aan dezelfde hash-slot.

U kunt ook CROSSSLOT fouten zien bij het Enterprise-clusterbeleid. Alleen de volgende multi-key opdrachten zijn toegestaan in slots met Enterprise clustering: DEL, MSET, MGET, EXISTS, UNLINK, en TOUCH.

In Active-Active databases kunnen schrijfopdrachten voor meerdere sleutels (DEL, MSET, UNLINK) alleen worden uitgevoerd op sleutels die zich in dezelfde slot bevinden. De volgende multi-key commando's zijn echter toegestaan tussen slots in Active-Active databases: MGET, EXISTS, en TOUCH. Zie Database-clustering voor meer informatie.

Sharding-configuratie

Elke SKU van Azure Managed Redis is geconfigureerd voor het parallel uitvoeren van een specifiek aantal Redis-serverprocessen, shards . De relatie tussen doorvoerprestaties, het aantal shards en het aantal beschikbare vCPU's op elk exemplaar is ingewikkeld. Het toevoegen van shards verhoogt doorgaans de prestaties omdat Redis-bewerkingen parallel kunnen worden uitgevoerd. nl-NL: Als shards echter geen opdrachten kunnen uitvoeren omdat er geen vCPU's beschikbaar zijn, kan de prestatie daadwerkelijk afnemen. In de volgende tabel ziet u de shardingconfiguratie voor elke beheerde Azure Redis-SKU. Deze shards worden toegewezen om het gebruik van elke vCPU te optimaliseren terwijl vCPU-cycli worden gereserveerd voor Redis Enterprise-proxy-, beheeragent- en besturingssysteemsysteemtaken die ook van invloed zijn op de prestaties.

Opmerking

Azure Managed Redis optimaliseert de prestaties in de loop van de tijd door het aantal shards en vCPU's te wijzigen dat op elke SKU wordt gebruikt.

Belangrijk

Alle in-memory lagen die meer dan 120 GB aan opslagruimte gebruiken, zijn in publieke preview, inclusief Geheugen Geoptimaliseerde M150 en hoger; Gebalanceerde B150 en hoger; en Rekenkracht Geoptimaliseerde X150 en hoger. Al deze lagen en hoger bevinden zich in openbare preview.

Alle voor Flash geoptimaliseerde lagen bevinden zich in openbare preview.

Niveaus Geoptimaliseerd voor Flash (preview) Geoptimaliseerd geheugen Gebalanceerd Rekenkracht geoptimaliseerd
Grootte (GB) vCPU's/primaire shards vCPU's/primaire shards vCPU's/primaire shards vCPU's/primaire shards
0,5 - - 2/1 -
1 - - 2/1 -
3 - - 2/2 4/2
6 - - 2/2 4/2
12 - 2/2 4/2 8 juni
24 - 4/2 8 juni 16 december
60 - 8 juni 16 december 32/24
120 - 16 december 32/24 64/48
180 * - 24/7 48/48 96/96
240 * 8 juni 32/24 64/48 128/96
360 * - 48/48 96/96 192/192
480 * 16 december 64/48 128/96 256/192
720 * 24/7 96/96 192/192 384/384
960 * 32/24 128/192 256/192 -
1440 * 48/48 192/192 - -
1920 * 64/48 256/192 - -
4500 * 144/96 - - -

* Deze lagen bevinden zich in publieke preview.

Uitvoeren zonder modus voor hoge beschikbaarheid ingeschakeld

Het is mogelijk om te draaien zonder de hoge beschikbaarheidsmodus ingeschakeld. Dit betekent dat uw Redis-exemplaar geen replicatie heeft ingeschakeld en geen toegang heeft tot de SLA voor beschikbaarheid. We raden af om in de niet-HA-modus te draaien buiten ontwikkel- en testsituaties. U kunt hoge beschikbaarheid niet uitschakelen in een exemplaar dat al is gemaakt. U kunt hoge beschikbaarheid inschakelen in een exemplaar dat deze niet heeft. Omdat een exemplaar zonder hoge beschikbaarheid minder VM's/knooppunten gebruikt, kunnen vCPU's niet zo efficiënt worden gebruikt, zodat de prestaties mogelijk lager zijn.

Gereserveerd geheugen

Op elk beheerd Redis-exemplaar van Azure wordt ongeveer 20% van het beschikbare geheugen gereserveerd als buffer voor niet-cachebewerkingen, zoals replicatie tijdens failover en actieve geo-replicatiebuffer. Deze buffer helpt de cacheprestaties te verbeteren en geheugenhongering te voorkomen.

Afbouwen

Omlaag schalen wordt momenteel niet ondersteund in Door Azure beheerde redis. Zie Beperkingen voor het schalen van Azure Managed Redis voor meer informatie.

Flash-geoptimaliseerde laag

De Flash-geoptimaliseerde laag maakt gebruik van zowel NVMe Flash-opslag als RAM. Omdat Flash-opslag lager is, kunt u met behulp van de categorie Geoptimaliseerd voor Flash bepaalde prestaties afruilen voor prijsefficiëntie.

Op exemplaren die zijn geoptimaliseerd voor Flash, bevindt 20% van de cacheruimte zich in het RAM-geheugen, terwijl de andere 80% Flash-opslag gebruikt. Alle sleutels worden opgeslagen in ram-geheugen, terwijl de waarden kunnen worden opgeslagen in Flash Storage of RAM. De Redis-software bepaalt op intelligente wijze de locatie van de waarden. Heet waarden die vaak worden gebruikt, worden opgeslagen in RAM, terwijl Koude waarden die minder vaak worden gebruikt, op Flash worden bewaard. Voordat gegevens worden gelezen of geschreven, moeten ze worden verplaatst naar het werkgeheugen, waarbij ze hot gegevens worden.

Omdat Redis optimaliseert voor de beste prestaties, vult het exemplaar eerst het beschikbare RAM-geheugen in voordat items worden toegevoegd aan Flash-opslag. Het vullen van ram-geheugen heeft eerst enkele gevolgen voor prestaties:

  • Betere prestaties en lagere latentie kunnen optreden bij het testen met weinig geheugengebruik. Testen met een volledig cache-exemplaar kan lagere prestaties opleveren omdat alleen RAM wordt gebruikt in de testfase met weinig geheugen.
  • Naarmate u meer gegevens naar de cache schrijft, neemt het aandeel gegevens in RAM-geheugen af in vergelijking met Flash-opslag, waardoor de latentie en doorvoerprestaties ook afnemen.

Workloads die geschikt zijn voor de Flash-geoptimaliseerde laag

Werklasten die waarschijnlijk goed presteren op de Flash Optimized-laag, hebben vaak de volgende kenmerken:

  • Lees zwaar, met een hoge verhouding van leesopdrachten tot schrijfopdrachten.
  • Access is gericht op een subset sleutels die veel vaker worden gebruikt dan de rest van de gegevensset.
  • Relatief grote waarden in vergelijking met sleutelnamen. (Omdat sleutelnamen altijd in RAM worden opgeslagen, kunnen grote waarden een knelpunt worden voor geheugengroei.)

Workloads die niet geschikt zijn voor de laag Flash Optimized

Sommige workloads hebben toegangskenmerken die minder zijn geoptimaliseerd voor het ontwerp van de laag Flash Optimized:

  • Creëer zware werkbelastingen.
  • Willekeurige of uniforme patronen voor gegevenstoegang in de meeste gegevenssets.
  • Lange sleutelnamen met relatief kleine waardegrootten.