Delen via


Caching in een cloudeigen app

Tip

Deze inhoud is een fragment uit het eBook, Cloud Native .NET Applications for Azure ontwerpen, beschikbaar op .NET Docs of als een gratis downloadbare PDF die offline kan worden gelezen.

Cloud Native .NET apps for Azure eBook cover thumbnail.

De voordelen van caching zijn goed begrepen. De techniek werkt door tijdelijk veelgebruikte gegevens uit een back-endgegevensarchief te kopiëren naar snelle opslag die zich dichter bij de toepassing bevindt. Caching wordt vaak geïmplementeerd waar...

  • Gegevens blijven relatief statisch.
  • Gegevenstoegang is traag, met name in vergelijking met de snelheid van de cache.
  • Gegevens zijn onderhevig aan hoge conflicten.

Waarom?

Zoals besproken in de richtlijnen voor Microsoft-caching, kan caching de prestaties, schaalbaarheid en beschikbaarheid voor afzonderlijke microservices en het systeem als geheel verbeteren. Het vermindert de latentie en conflicten bij het verwerken van grote hoeveelheden gelijktijdige aanvragen naar een gegevensarchief. Naarmate het gegevensvolume en het aantal gebruikers toeneemt, wordt des te groter de voordelen van caching.

Caching is het meest effectief wanneer een client herhaaldelijk gegevens leest die onveranderbaar zijn of die onregelmatig worden gewijzigd. Voorbeelden hiervan zijn referentie-informatie, zoals product- en prijsinformatie, of gedeelde statische resources die kostbaar zijn om te bouwen.

Hoewel microservices staatloos moeten zijn, kan een gedistribueerde cache gelijktijdige toegang tot sessiestatusgegevens ondersteunen wanneer dit absoluut vereist is.

Overweeg ook caching om terugkerende berekeningen te voorkomen. Als een bewerking gegevens transformeert of een ingewikkelde berekening uitvoert, slaat u het resultaat op voor volgende aanvragen in de cache.

Cache-architectuur

Cloudeigen toepassingen implementeren doorgaans een gedistribueerde cachearchitectuur. De cache wordt gehost als een cloudgebaseerde back-upservice, gescheiden van de microservices. In afbeelding 5-15 ziet u de architectuur.

Caching in a cloud native app

Afbeelding 5-15: Caching in een systeemeigen cloud-app

In de vorige afbeelding ziet u hoe de cache onafhankelijk is van en wordt gedeeld door de microservices. In dit scenario wordt de cache aangeroepen door de API-gateway. Zoals beschreven in hoofdstuk 4, fungeert de gateway als front-end voor alle binnenkomende aanvragen. De gedistribueerde cache verhoogt de reactiesnelheid van het systeem door waar mogelijk gegevens in de cache te retourneren. Door de cache van de services te scheiden, kan de cache bovendien onafhankelijk omhoog of uitschalen om te voldoen aan verhoogde verkeersvereisten.

In de vorige afbeelding ziet u een algemeen cachepatroon dat bekend staat als het cache-aside-patroon. Voor een binnenkomende aanvraag voert u eerst een query uit op de cache (stap 1) voor een antwoord. Indien gevonden, worden de gegevens onmiddellijk geretourneerd. Als de gegevens niet in de cache staan (ook wel een cachemisser genoemd), worden deze opgehaald uit een lokale database in een downstreamservice (stap 2). Deze wordt vervolgens naar de cache geschreven voor toekomstige aanvragen (stap 3) en teruggezet naar de aanroeper. Zorg ervoor dat gegevens in de cache periodiek worden verwijderd, zodat het systeem tijdig en consistent blijft.

Naarmate een gedeelde cache groeit, kan het nuttig zijn om de gegevens over meerdere knooppunten te partitioneren. Dit kan helpen conflicten te minimaliseren en de schaalbaarheid te verbeteren. Veel cachingservices ondersteunen de mogelijkheid om knooppunten dynamisch toe te voegen en te verwijderen en gegevens opnieuw te verdelen over partities. Deze benadering omvat doorgaans clustering. Clustering maakt een verzameling federatieve knooppunten beschikbaar als een naadloze, enkele cache. Intern worden de gegevens echter verspreid over de knooppunten na een vooraf gedefinieerde distributiestrategie waarmee de belasting gelijkmatig wordt verdeeld.

Azure Cache voor Redis

Azure Cache voor Redis is een beveiligde gegevenscaching en berichtenbrokerservice, volledig beheerd door Microsoft. Als PaaS-aanbieding (Platform as a Service) wordt gebruikt, biedt het toegang tot gegevens met hoge doorvoer en lage latentie. De service is toegankelijk voor elke toepassing binnen of buiten Azure.

De Azure Cache voor Redis-service beheert de toegang tot opensource Redis-servers die worden gehost in Azure-datacenters. De service fungeert als een gevel die beheer, toegangsbeheer en beveiliging biedt. De service biedt systeemeigen ondersteuning voor een uitgebreide set gegevensstructuren, waaronder tekenreeksen, hashes, lijsten en sets. Als uw toepassing al Gebruikmaakt van Redis, werkt deze met Azure Cache voor Redis.

Azure Cache voor Redis is meer dan een eenvoudige cacheserver. Het kan een aantal scenario's ondersteunen om een microservicesarchitectuur te verbeteren:

  • Een gegevensarchief in het geheugen
  • Een gedistribueerde niet-relationele database
  • Een berichtenbroker
  • Een configuratie- of detectieserver

Voor geavanceerde scenario's kan een kopie van de gegevens in de cache op schijf worden bewaard. Als een onherstelbare gebeurtenis zowel de primaire als de replicacache uitschakelt, wordt de cache gereconstrueerd vanuit de meest recente momentopname.

Azure Redis Cache is beschikbaar in een aantal vooraf gedefinieerde configuraties en prijscategorieën. De Premium-laag bevat veel functies op ondernemingsniveau, zoals clustering, gegevenspersistentie, geo-replicatie en isolatie van virtuele netwerken.