Cloudontwerppatronen die ondersteuning bieden voor betrouwbaarheid

Wanneer u workloadarchitecturen ontwerpt, moet u branchepatronen gebruiken die veelvoorkomende uitdagingen aanpakken. Patronen kunnen u helpen opzettelijke afwegingen te maken binnen workloads en te optimaliseren voor het gewenste resultaat. Ze kunnen ook helpen bij het beperken van risico's die afkomstig zijn van specifieke problemen, die van invloed kunnen zijn op beveiliging, prestaties, kosten en bewerkingen. Als deze risico's niet worden verzacht, veroorzaken ze uiteindelijk betrouwbaarheidsproblemen. Deze patronen worden ondersteund door de praktijk, zijn ontworpen voor cloudschaal- en operationele modellen en zijn inherent leverancieronafhankelijk. Het gebruik van bekende patronen als een manier om uw workloadontwerp te standaardiseren, is een onderdeel van operationele uitmuntendheid.

Veel ontwerppatronen ondersteunen rechtstreeks een of meer architectuurpijlers. Ontwerppatronen die ondersteuning bieden voor de pijler Betrouwbaarheid, geven prioriteit aan beschikbaarheid van workloads, zelfbehoud, herstel, integriteit van gegevens en verwerking, en beheersing van storingen.

Ontwerppatronen voor betrouwbaarheid

De volgende tabel bevat een overzicht van cloudontwerppatronen die ondersteuning bieden voor de doelstellingen van betrouwbaarheid.

Patroon Samenvatting
Ambassadeur Hiermee wordt netwerkcommunicatie ingekapseld en beheerd door cross-cutting taken te offloaden die betrekking hebben op netwerkcommunicatie. De resulterende helperservices initiëren communicatie namens de client. Dit bemiddelingspunt biedt de mogelijkheid om betrouwbaarheidspatronen toe te voegen aan netwerkcommunicatie, zoals opnieuw proberen of bufferen.
Back-ends voor front-ends Hiermee wordt de servicelaag van een workload geïndividaliseerd door afzonderlijke services te maken die exclusief zijn voor een specifieke front-endinterface. Vanwege deze scheiding heeft een storing in de servicelaag die ondersteuning biedt voor één client mogelijk geen invloed op de beschikbaarheid van de toegang van een andere client. Wanneer u verschillende clients verschillend behandelt, kunt u prioriteit geven aan betrouwbaarheidsinspanningen op basis van verwachte clienttoegangspatronen.
Bulkhead Introduceert opzettelijke en volledige segmentatie tussen onderdelen om de straal van storingen te isoleren. Met deze foutisolatiestrategie wordt geprobeerd fouten te beperken tot alleen het schot dat het probleem ondervindt, waardoor andere schotten niet worden beïnvloed.
Cache-Aside Optimaliseert de toegang tot regelmatig gelezen gegevens door een cache te introduceren die op aanvraag wordt gevuld. De cache wordt vervolgens gebruikt voor volgende aanvragen voor dezelfde gegevens. Caching maakt gegevensreplicatie en kan op beperkte manieren worden gebruikt om de beschikbaarheid van veelgebruikte gegevens te behouden als het oorspronkelijke gegevensarchief tijdelijk niet beschikbaar is. Als er bovendien een storing in de cache is, kan de workload terugvallen op het oorspronkelijke gegevensarchief.
Circuitonderbreker Voorkomt continue aanvragen voor een niet-werkende of niet-beschikbare afhankelijkheid. Door dit te doen, voorkomt dit patroon overbelasting van een defecte afhankelijkheid. U kunt dit patroon ook gebruiken om een probleemloze degradatie in de workload te activeren. Circuitonderbrekers zijn vaak gekoppeld aan automatisch herstel om zowel zelfbehoud als zelfherstel te bieden.
Claimcontrole Hiermee worden gegevens gescheiden van de berichtenstroom, zodat u de gegevens met betrekking tot een bericht afzonderlijk kunt ophalen. Berichtbussen bieden niet dezelfde betrouwbaarheid en herstel na noodgevallen die vaak aanwezig zijn in speciale gegevensarchieven, dus het scheiden van de gegevens van het bericht kan zorgen voor meer betrouwbaarheid voor de onderliggende gegevens. Deze scheiding maakt het ook mogelijk om berichtenwachtrijen na een noodgeval te herstellen.
Compenserende transactie Biedt een mechanisme om te herstellen van fouten door de effecten van eerder toegepaste acties om te draaien. Dit patroon lost storingen in kritieke workloadpaden op met behulp van compensatieacties, waarbij processen kunnen worden gebruikt zoals het rechtstreeks terugdraaien van gegevenswijzigingen, het verbreken van transactievergrendelingen of zelfs het uitvoeren van systeemeigen systeemgedrag om het effect te keren.
Concurrerende consumenten Hiermee wordt gedistribueerde en gelijktijdige verwerking toegepast om items in een wachtrij efficiënt te verwerken. Dit model bouwt redundantie in wachtrijverwerking door consumenten te behandelen als replica's, zodat een exemplaarfout niet verhindert dat andere consumenten wachtrijberichten verwerken.
Gebeurtenisbronnen Statuswijziging wordt behandeld als een reeks gebeurtenissen en legt deze vast in een onveranderbaar logboek dat alleen kan worden toegevoegd. U kunt dit patroon gebruiken wanneer een betrouwbare geschiedenis van wijzigingen cruciaal is in een complex bedrijfsproces. Het vereenvoudigt ook de staatsreconstructie als u statusopslag moet herstellen.
Federatieve identiteit Hiermee wordt een vertrouwensrelatie gedelegeerd aan een id-provider die extern is voor de workload voor het beheren van gebruikers en het bieden van verificatie voor uw toepassing. Het offloaden van gebruikersbeheer en verificatie verschuift betrouwbaarheid voor deze onderdelen naar de id-provider, die meestal een hoge SLA heeft. Bovendien hoeven tijdens herstel na noodgevallen van workloads verificatieonderdelen waarschijnlijk niet te worden behandeld als onderdeel van het plan voor het herstellen van workloads.
Aggregatie van gateway Vereenvoudigt clientinteracties met uw workload door aanroepen naar meerdere back-endservices in één aanvraag samen te voegen. Met deze topologie kunt u tijdelijke foutafhandeling verschuiven van een gedistribueerde implementatie over clients naar een gecentraliseerde implementatie.
Offloading van gateway Offload aanvraagverwerking naar een gatewayapparaat voor en na het doorsturen van de aanvraag naar een back-endknooppunt. Het overdragen van deze verantwoordelijkheid naar een gateway vermindert de complexiteit van toepassingscode op back-endknooppunten. In sommige gevallen vervangt offloading de functionaliteit volledig door een betrouwbare platformfunctie.
Routering van gateway Routeert binnenkomende netwerkaanvragen naar verschillende back-endsystemen op basis van aanvraagintenties, bedrijfslogica en beschikbaarheid van back-end. Met gatewayroutering kunt u verkeer alleen routeren naar gezonde knooppunten in uw systeem.
Geode Hiermee worden systemen geïmplementeerd die werken in actief-actief-beschikbaarheidsmodi in meerdere regio's. Dit patroon maakt gebruik van gegevensreplicatie ter ondersteuning van het ideaal dat elke client verbinding kan maken met elk geografisch exemplaar. Het kan uw workload helpen bestand te zijn tegen een of meer regionale storingen.
Eindpuntstatusbewaking Biedt een manier om de status of status van een systeem te controleren door een eindpunt weer te geven dat speciaal voor dat doel is ontworpen. U kunt dit eindpunt gebruiken om de status van uw workload te beheren en voor waarschuwingen en dashboarding. U kunt het ook gebruiken als signaal voor zelfherstellend herstel.
Indextabel Optimaliseert het ophalen van gegevens in gedistribueerde gegevensarchieven door clients in staat te stellen metagegevens op te zoeken, zodat gegevens rechtstreeks kunnen worden opgehaald, waardoor volledige gegevensopslagscans niet hoeven te worden uitgevoerd. Omdat clients via een opzoekproces naar hun shard, partitie of eindpunt worden verwezen, kunt u dit patroon gebruiken om een failoverbenadering voor gegevenstoegang mogelijk te maken.
Selectie van leider Hiermee wordt een leider van exemplaren van een gedistribueerde toepassing vastgesteld. De leider coördineert verantwoordelijkheden die betrekking hebben op het bereiken van een doel. Dit patroon vermindert het effect van storingen in knooppunten door werk op betrouwbare wijze om te leiden. Het implementeert ook failover via consensusalgoritmen wanneer een leider niet goed functioneert.
Pijpen en filters Complexe gegevensverwerking wordt opgesplitst in een reeks onafhankelijke fasen om een specifiek resultaat te bereiken. De individuele verantwoordelijkheid van elke fase zorgt voor gerichte aandacht en voorkomt de afleiding van de verstrepen gegevensverwerking.
Wachtrij met prioriteit Zorgt ervoor dat items met een hogere prioriteit worden verwerkt en voltooid vóór items met een lagere prioriteit. Door items te scheiden op basis van bedrijfsprioriteit kunt u de betrouwbaarheidsinspanningen richten op het meest kritieke werk.
Uitgever/abonnee Koppelt onderdelen van een architectuur los door directe client-to-service- of client-to-services-communicatie te vervangen door communicatie via een tussenliggende berichtenbroker of gebeurtenisbus.
Load Leveling op basis van wachtrij Hiermee bepaalt u het niveau van binnenkomende aanvragen of taken door deze in een wachtrij te bufferen en de wachtrijprocessor deze in een gecontroleerd tempo te laten verwerken. Deze aanpak kan tolerantie bieden tegen plotselinge pieken in de vraag door de aankomst van taken los te koppelen van hun verwerking. Het kan ook storingen in de wachtrijverwerking isoleren, zodat ze geen invloed hebben op de opname.
Snelheidsbeperking Hiermee bepaalt u de snelheid van clientaanvragen om beperkingsfouten te verminderen en niet-afhankelijke scenario's voor opnieuw proberen bij fouten te voorkomen. Deze tactiek beschermt de client door de beperkingen en kosten van communicatie met een service te erkennen wanneer de service is ontworpen om te voorkomen dat opgegeven limieten worden bereikt. Het werkt door het aantal en/of de grootte van bewerkingen te beheren die tijdens een bepaalde periode naar de service worden verzonden.
Opnieuw proberen Hiermee worden fouten opgelost die tijdelijk of onregelmatig kunnen zijn door bepaalde bewerkingen opnieuw uit te voeren, op een gecontroleerde manier. Tijdelijke fouten in een gedistribueerd systeem beperken is een belangrijke techniek voor het verbeteren van de tolerantie van een workload.
Gedistribueerde Saga-transacties Coördineert langlopende en mogelijk complexe transacties door het werk op te delen in reeksen van kleinere, onafhankelijke transacties. Elke transactie moet ook compenserende acties hebben om fouten in de uitvoering om te keren en de integriteit te behouden. Omdat monolithische transacties op meerdere gedistribueerde systemen meestal onmogelijk zijn, biedt dit patroon consistentie en betrouwbaarheid door atomiciteit en compensatie te implementeren.
Scheduler Agent Supervisor verdeelt en distribueert taken efficiënt over een systeem op basis van factoren die waarneembaar zijn in het systeem. Dit patroon maakt gebruik van metrische statusgegevens om fouten te detecteren en taken om te leiden naar een gezonde agent om de gevolgen van een storing te beperken.
Sequentiële verwerking Onderhoudt gelijktijdig inkomend berichtenverkeer en ondersteunt ook verwerking in een gedefinieerde volgorde. Dit patroon kan racevoorwaarden elimineren die moeilijk kunnen worden opgelost, omstreden berichtenafhandeling of andere tijdelijke oplossingen voor het adresseren van verkeerd geordende berichten die tot storingen kunnen leiden.
Sharding Laadt naar een specifieke logische bestemming om de specifieke aanvraag af te handelen, waardoor colocatie voor optimalisatie mogelijk wordt. Omdat de gegevens of verwerking is geïsoleerd van de shard, blijft een storing in één shard geïsoleerd voor die shard.
Strangler Fig Biedt een methode voor het systematisch vervangen van de onderdelen van een actief systeem door nieuwe onderdelen, vaak tijdens een migratie of modernisering van het systeem. De incrementele benadering van dit patroon kan helpen bij het beperken van risico's tijdens een overgang.
Beperking Hiermee worden limieten opgelegd aan de snelheid of doorvoer van binnenkomende aanvragen naar een resource of onderdeel. U kunt de limieten ontwerpen om resource-uitputting te voorkomen die tot storingen kan leiden. U kunt dit patroon ook gebruiken als een controlemechanisme in een probleemloos degradatieplan.

Volgende stappen

Bekijk de cloudontwerppatronen die ondersteuning bieden voor de andere Azure Well-Architected Framework-pijlers: