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 beperken tot alleen het schot dat het probleem ervaart, om impact op andere schotten te 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 werklast ook terugvallen op de oorspronkelijke gegevensopslag.
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 geleidelijke degradatie van de werkbelasting te activeren. Circuitonderbrekers worden vaak gekoppeld aan automatisch herstel om zowel zelfbehoud als zelfherstel mogelijk te maken.
Claimbewijs 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.
Configuratie van Edge-werkbelasting Hiermee beheert u de configuratie voor gedistribueerde edge-workloads door de cloud als de gewenste bron van waarheid te behandelen en ervoor te zorgen dat de configuratie lokaal beschikbaar blijft tijdens onderbrekingen van de connectiviteit. Dit patroon verbetert de betrouwbaarheid door configuratieafstemming, driftdetectie en terugdraaiactie te ondersteunen om te herstellen van gedeeltelijke updates of ongeldige configuraties.
Event Sourcing Behandelt statuswijziging als een reeks van gebeurtenissen, waarbij deze worden vastgelegd in een onveranderlijke, alleen toevoegbaar logboek. U kunt dit patroon gebruiken wanneer een betrouwbare geschiedenis van wijzigingen cruciaal is in een complex bedrijfsproces. Het vergemakkelijkt ook statusherstel als u statusopslagplaatsen dient te herstellen.
Implementatiestempels Hiermee worden tenants of workloadeenheden geïsoleerd in onafhankelijke instellingen die werken zonder gedeelde afhankelijkheden. Een fout in één stempel is opgenomen in die stempel en heeft geen invloed op tenants op andere stempels. Het implementeren van stempels in verschillende regio's biedt ook een basis voor redundantie en herstelplanning.
Federatieve identiteit Hiermee wordt een vertrouwensrelatie gedelegeerd aan een id-provider die extern is aan de werkbelasting voor het beheren van gebruikers en om authenticatie voor uw toepassing te bieden. Het offloaden van gebruikersbeheer en verificatie verschuift de betrouwbaarheid voor deze onderdelen naar de id-provider, die meestal een hoge SLA heeft. Bovendien hoeven authenticatiecomponenten tijdens noodherstel van workloads waarschijnlijk niet te worden aangepakt als onderdeel van het workload-herstelplan.
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.
Gateway-ontlasting Plaatst aanvraagverwerking op een gatewayapparaat voordat en nadat de aanvraag wordt doorgestuurd naar een achterliggende knooppunt. 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.
Gateway-routing 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 idee dat elke client verbinding kan maken met een geografische instantie. Het kan uw workload helpen bestand te zijn tegen een of meer regionale storingen.
Statuseindpuntbewaking Biedt een manier om de gezondheid of status van een systeem te bewaken door een eindpunt bloot te leggen 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 zelfherstel.
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.
Leidingen en Filters Breekt complexe gegevensverwerking op in een reeks onafhankelijke fasen om een specifiek resultaat te bereiken. De unieke verantwoordelijkheid van elke fase maakt gerichte aandacht mogelijk en voorkomt de afleiding door vermengde 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.
Publisher/Subscriber Koppelt componenten van een architectuur los door directe communicatie van client naar service of van client naar services te vervangen door communicatie via een tussenliggende boodschapbroker of gebeurtenissenbus.
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 klantverzoeken om limiteringsfouten te verminderen en onbegrensde scenario's van 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 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 gezondheidsstatistieken om storingen te identificeren en taken om te leiden naar een gezonde agent om de gevolgen van een storing te beperken.
Sequentiële konvooi Onderhoudt gelijktijdige binnenkomende berichten en ondersteunt 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 Stuurt de belasting naar een specifieke logische bestemming om het specifieke verzoek te verwerken, waardoor plaatsing voor optimalisatie mogelijk is. Omdat de gegevens of verwerking geïsoleerd is tot de shard, blijft een storing in één shard geïsoleerd tot 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 geleidelijk degradatieplan.

Volgende stappen

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