Delen via


Ontwerppatronen voor architectuur 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 uw 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 beperkt, veroorzaken deze uiteindelijk betrouwbaarheidsproblemen. Deze patronen worden ondersteund door echte ervaring, zijn ontworpen voor cloudschaal- en operationele modellen en zijn inherent leverancierneutraal. 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 prioriteren de beschikbaarheid van workloads, zelfbehoud, herstel, gegevens en verwerkingsintegriteit en insluiting van storingen.

De volgende tabel bevat een overzicht van architectuurontwerppatronen die de doelstellingen van betrouwbaarheid ondersteunen.

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 Individualiseert de servicelaag van een workload 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 een 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.
Schot Introduceert opzettelijke en volledige segmentatie tussen onderdelen om de straalstraal van storingen te isoleren. Deze strategie voor foutisolatie probeert fouten te bevatten tot alleen het schot dat het probleem ondervindt, waardoor de impact op andere schotten wordt voorkomen.
Cache-Aside Optimaliseert de toegang tot regelmatig gelezen gegevens door een cache te introduceren die op aanvraag wordt ingevuld. 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 een storing in de cache is, kan de werkbelasting ook terugvallen op het oorspronkelijke gegevensarchief.
Vermogenschakelaar Hiermee voorkomt u continue aanvragen voor een storing of een niet-beschikbare afhankelijkheid. Dit patroon voorkomt dat een foutieve afhankelijkheid overbelast raakt. U kunt dit patroon ook gebruiken om respijtieve degradatie in de werkbelasting te activeren. Circuitonderbrekers worden vaak gekoppeld aan automatisch herstel om zowel zelfbehoud als zelfherstel mogelijk te maken.
Claimcontrole Scheidt gegevens van de berichtenstroom en biedt een manier om de gegevens met betrekking tot een bericht afzonderlijk op te halen. Berichtenbussen bieden niet dezelfde betrouwbaarheid en herstel na noodgevallen die vaak aanwezig zijn in toegewezen gegevensarchieven, dus het scheiden van de gegevens uit het bericht kan een grotere betrouwbaarheid bieden voor de onderliggende gegevens. Met deze scheiding kunt u ook een herstelbenadering voor berichtenwachtrijen uitvoeren na een noodgeval.
Compenserende transactie Biedt een mechanisme voor het herstellen van fouten door de effecten van eerder toegepaste acties om te keren. Met dit patroon worden storingen in kritieke workloadpaden opgelost 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 omkeren.
Concurrerende consumenten Hiermee wordt gedistribueerde en gelijktijdige verwerking toegepast om items in een wachtrij efficiënt te verwerken. Met dit model wordt redundantie in wachtrijverwerking gebouwd door consumenten als replica's te behandelen. Een exemplaarfout voorkomt dus niet dat andere consumenten wachtrijberichten verwerken.
Gebeurtenisbronnen Behandelt statuswijziging als reeks gebeurtenissen, waarbij deze worden vastgelegd in een onveranderbaar, alleen toevoeglogboek. U kunt dit patroon gebruiken wanneer een betrouwbare geschiedenis van wijzigingen cruciaal is in een complex bedrijfsproces. Het vereenvoudigt ook staatsreconstructie als u statusarchieven moet herstellen.
Federatieve identiteit Hiermee wordt een vertrouwensrelatie gedelegeerd aan een id-provider die zich buiten de werkbelasting voor het beheren van gebruikers en verificatie biedt voor uw toepassing. Het offloaden van gebruikersbeheer en verificatie verschuift de betrouwbaarheid voor deze onderdelen naar de id-provider, die meestal een hoge SLA heeft. Bovendien hoeven verificatieonderdelen tijdens herstel na noodgevallen van workloads waarschijnlijk niet te worden aangepakt als onderdeel van het herstelplan van de workload.
Gatewayaggregatie 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 tussen 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 offloaden van deze verantwoordelijkheid voor een gateway vermindert de complexiteit van toepassingscode op back-endknooppunten. In sommige gevallen vervangt offloading volledig de functionaliteit door een betrouwbare functie die door het platform wordt geleverd.
Gatewayroutering Hiermee worden binnenkomende netwerkaanvragen naar verschillende back-endsystemen gerouteerd op basis van aanvraagintenties, bedrijfslogica en beschikbaarheid van back-ends. Met gatewayroutering kunt u verkeer routeren naar alleen gezonde knooppunten in uw systeem.
Geode Hiermee worden systemen geïmplementeerd die werken in actief-actief-beschikbaarheidsmodi in meerdere geografische gebieden. Dit patroon maakt gebruik van gegevensreplicatie ter ondersteuning van het ideale dat elke client verbinding kan maken met een geografisch exemplaar. Het kan uw workload helpen bestand te zijn tegen een of meer regionale storingen.
Statuseindpuntbewaking Biedt een manier om de status of status van een systeem te bewaken door een eindpunt weer te geven dat speciaal voor dat doel is ontworpen. U kunt dit eindpunt gebruiken om de status van uw workload en voor waarschuwingen en dashboarding te beheren. U kunt het ook gebruiken als signaal voor zelfherstelherstel.
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 het niet nodig is om volledige gegevensopslagscans uit te voeren. Omdat clients via een opzoekproces naar hun shard, partitie of eindpunt worden verwezen, kunt u dit patroon gebruiken om een failoverbenadering voor gegevenstoegang te vergemakkelijken.
Leider verkiezing 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 betrouwbaar om te leiden. Het implementeert ook failover via consensusalgoritmen wanneer een leider defect is.
Pijpen en filters Breekt complexe gegevensverwerking op in een reeks onafhankelijke fasen om een specifiek resultaat te bereiken. De enige verantwoordelijkheid van elke fase maakt gerichte aandacht mogelijk en vermijdt afleiding van commingled gegevensverwerking.
Prioriteitswachtrij Zorgt ervoor dat items met een hogere prioriteit worden verwerkt en voltooid voor 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-naar-service- of client-naar-services-communicatie te vervangen door communicatie via een tussenliggende berichtenbroker of event bus.
Load Leveling op basis van wachtrij Hiermee bepaalt u het niveau van binnenkomende aanvragen of taken door ze in een wachtrij te bufferen en de wachtrijprocessor deze in een bepaald tempo te laten verwerken. Deze aanpak kan tolerantie bieden tegen plotselinge pieken in de vraag door de ontvangst van taken los te koppelen van hun verwerking. Het kan ook storingen in wachtrijverwerking isoleren, zodat ze geen invloed hebben op de opname.
Snelheidsbeperking Hiermee bepaalt u het aantal clientaanvragen om beperkingsfouten te verminderen en niet-gebonden scenario's voor opnieuw proberen 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 de opgegeven limieten worden bereikt. Het werkt door het aantal en/of de grootte van bewerkingen te beheren die gedurende een bepaalde periode naar de service worden verzonden.
opnieuw proberen Lost fouten op 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.
Saga gedistribueerde transacties Coördineert langlopende en potentieel complexe transacties door het werk op te vouwen in reeksen van kleinere, onafhankelijke transacties. Elke transactie moet ook compenserende acties hebben om fouten bij de uitvoering om te keren en integriteit te behouden. Omdat monolithische transacties in meerdere gedistribueerde systemen meestal onmogelijk zijn, biedt dit patroon consistentie en betrouwbaarheid door atomiciteit en compensatie te implementeren.
Scheduler Agent Supervisor Verdeelt en herdistribueert taken efficiënt over een systeem op basis van factoren die in het systeem kunnen worden waargenomen. 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 konvoy Onderhoudt gelijktijdig inkomend berichten en biedt ondersteuning voor verwerking in een gedefinieerde volgorde. Met dit patroon kunnen racevoorwaarden worden geëlimineerd die moeilijk kunnen worden opgelost, conflicterend berichtafhandeling of andere tijdelijke oplossingen voor het oplossen van verkeerd geordende berichten die kunnen leiden tot storingen.
Sharding Hiermee wordt de belasting naar een specifieke logische bestemming om de specifieke aanvraag af te handelen, waardoor colocatie voor optimalisatie mogelijk is. Omdat de gegevens of verwerking is geïsoleerd voor 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.
Snelheidsbeperking Hiermee worden limieten opgelegd voor de snelheid of doorvoer van binnenkomende aanvragen voor een resource of onderdeel. U kunt de limieten ontwerpen om uitputting van resources te voorkomen die tot storingen kunnen leiden. U kunt dit patroon ook gebruiken als een controlemechanisme in een respijtvol degradatieplan.

Volgende stappen

Bekijk de ontwerppatronen voor architectuur die ondersteuning bieden voor de andere pijlers van Azure Well-Architected Framework: