Designmönster för arkitektur som stöder tillförlitlighet

När du utformar arbetsbelastningsarkitekturer bör du använda branschmönster som hanterar vanliga utmaningar. Mönster kan hjälpa dig att göra avsiktliga kompromisser inom arbetsbelastningar och optimera för önskat resultat. De kan också bidra till att minska risker som härrör från specifika problem, vilket kan påverka säkerhet, prestanda, kostnader och åtgärder. Om de inte minimeras kommer dessa risker så småningom att orsaka tillförlitlighetsproblem. Dessa mönster backas upp av verkliga upplevelser, är utformade för molnskala och driftsmodeller och är i sig leverantörsoberoende. Att använda välkända mönster som ett sätt att standardisera din arbetsbelastningsdesign är en komponent i driftseffektivitet.

Många designmönster har direkt stöd för en eller flera arkitekturpelare. Designmönster som stöder tillförlitlighets pelare prioriterar tillgänglighet för arbetsbelastning, självbevarande förmåga, återställning, data och integritet för bearbetning samt begränsning av funktionsstörningar.

I följande tabell sammanfattas designmönster för arkitektur som stöder tillförlitlighetsmålen.

Mönster Sammanfattning
Ambassadör Kapslar in och hanterar nätverkskommunikation genom att avlasta övergripande uppgifter som är relaterade till nätverkskommunikation. De resulterande hjälptjänsterna initierar kommunikation för klientens räkning. Den här medlingspunkten ger möjlighet att lägga till tillförlitlighetsmönster för nätverkskommunikation, till exempel återförsök eller buffring.
Serverdelar för klientdelar Individualiserar tjänstskiktet för en arbetsbelastning genom att skapa separata tjänster som är exklusiva för ett specifikt klientdelsgränssnitt. På grund av den här separationen kanske ett fel i tjänstlagret som stöder en klient inte påverkar tillgängligheten för en annan klients åtkomst. När du behandlar olika klienter på olika sätt kan du prioritera tillförlitlighetsarbetet baserat på förväntade klientåtkomstmönster.
Skiljevägg Introducerar avsiktlig och fullständig segmentering mellan komponenter för att isolera explosionsradien av fel. Den här strategin för felisolering försöker begränsa felen till endast det skott som upplever problemet och därmed förhindra påverkan på andra skott.
Cache-Aside Optimerar åtkomsten till data som läses ofta genom att införa en cache som fylls i på begäran. Cachen används sedan för efterföljande begäranden för samma data. Cachelagring skapar datareplikering och kan på begränsade sätt användas för att bevara tillgängligheten för data som används ofta om ursprungsdatalagret är tillfälligt otillgängligt. Om det uppstår ett fel i cacheminnet kan arbetsbelastningen dessutom återgå till ursprungsdatalagret.
Kretsbrytaren Förhindrar kontinuerliga förfrågningar till ett beroende som inte fungerar eller är otillgängligt. På så sätt förhindrar det här mönstret att ett felberoende överbelastas. Du kan också använda det här mönstret för att utlösa en graciös försämring i arbetsbelastningen. Kretsbrytare är ofta kopplade till automatisk återställning som ger både självskydd och självläkning.
Kravkontroll Separerar data från meddelandeflödet, vilket ger ett sätt att separat hämta data som är relaterade till ett meddelande. Meddelandebussar erbjuder inte samma tillförlitlighet och haveriberedskap som ofta finns i dedikerade datalager, så att separera data från meddelandet kan förbättra tillförlitligheten för underliggande data. Den här separationen möjliggör också en återställningsmetod för meddelandeköer efter en katastrof.
Kompenserande transaktion Tillhandahåller en mekanism för att återställa från fel genom att återställa effekterna av tidigare tillämpade åtgärder. Det här mönstret åtgärdar fel i kritiska arbetsbelastningsvägar med hjälp av kompensationsåtgärder, vilket kan innebära processer som att direkt återställa dataändringar, bryta transaktionslås eller till och med köra inbyggt systembeteende för att vända effekten.
Konkurrerande konsumenter Tillämpar distribuerad och samtidig bearbetning för att effektivt hantera objekt i en kö. Den här modellen skapar redundans i köbearbetning genom att behandla konsumenter som repliker, så ett instansfel hindrar inte andra konsumenter från att bearbeta kömeddelanden.
Konfiguration av Edge-arbetsbelastning Hanterar konfigurationen för distribuerade gränsarbetsbelastningar genom att behandla molnet som önskad sanningskälla samtidigt som konfigurationen förblir tillgänglig lokalt under anslutningsstörningar. Det här mönstret förbättrar tillförlitligheten genom att stödja konfigurationsavstämning, driftidentifiering och återställning för att återställa från partiella uppdateringar eller ogiltiga konfigurationer.
Event Sourcing Behandlar tillståndsändring som en serie händelser och samlar in dem i en oföränderlig logg med endast tillägg. Du kan använda det här mönstret när en tillförlitlig historik över ändringar är avgörande i en komplex affärsprocess. Det underlättar också statlig återuppbyggnad om du behöver återställa tillståndslager.
Distributionsstämplar Isolerar klientorganisationer eller arbetsbelastningsenheter i oberoende enheter som fungerar utan gemensamt öde. Ett fel i en stämpel finns i den stämpeln och påverkar inte klienter på andra stämplar. Distribution av stämplar mellan regioner utgör också en grund för redundans- och återställningsplanering.
Federerad identitet Delegerar förtroende till en identitetsprovider som är extern för arbetsbelastningen för att hantera användare och tillhandahålla autentisering för ditt program. När användarhantering och autentisering avlastas flyttas tillförlitligheten för dessa komponenter till identitetsprovidern, som vanligtvis har ett högt serviceavtal. Under återställning vid haveri för arbetsbelastningen behöver troligen inte autentiseringskomponenter behandlas som en del av återställningsplanen.
Gateway-aggregering Förenklar klientinteraktioner med din arbetsbelastning genom att aggregera anrop till flera serverdelstjänster i en enda begäran. Med den här topologin kan du flytta övergående felhantering från en distribuerad implementering mellan klienter till en centraliserad implementering.
Gateway-avlastning Avlastar bearbetning av begäranden till en gatewayenhet före och efter vidarebefordran av begäran till en serverdelsnod. Om du avlastar det här ansvaret till en gateway minskar komplexiteten i programkoden på serverdelsnoder. I vissa fall ersätter avlastning helt funktioner med en tillförlitlig funktion som tillhandahålls av plattformen.
Gatewayroutning Dirigerar inkommande nätverksbegäranden till olika serverdelssystem baserat på begärande avsikter, affärslogik och serverdelstillgänglighet. Med gatewayroutning kan du dirigera trafik till endast felfria noder i systemet.
Geode Distribuerar system som körs i aktiv-aktiva tillgänglighetslägen i flera geografiska områden. Det här mönstret använder datareplikering för att stödja idealet att alla klienter kan ansluta till valfri geografisk instans. Det kan hjälpa din arbetsbelastning att klara ett eller flera regionala avbrott.
Hälsoslutpunktsövervakning Ger ett sätt att övervaka hälsotillståndet eller statusen för ett system genom att exponera en slutpunkt som är särskilt utformad för det ändamålet. Du kan använda den här slutpunkten för att hantera arbetsbelastningens hälsa och för aviseringar och instrumentpaneler. Du kan också använda det som en signal för självläkande åtgärder.
Indextabell Optimerar datahämtning i distribuerade datalager genom att göra det möjligt för klienter att söka efter metadata så att data kan hämtas direkt, så att du inte behöver göra fullständiga genomsökningar av datalager. Eftersom klienter pekas på sin shard, partition eller slutpunkt via en sökningsprocess kan du använda det här mönstret för att underlätta en failover-metod för dataåtkomst.
Val av ledare Etablerar en ledare för instanser av ett distribuerat program. Ledaren samordnar ansvarsområden som är relaterade till att uppnå ett mål. Det här mönstret minskar effekten av nodfel genom att omdirigera arbetet på ett tillförlitligt sätt. Den implementerar även redundans via konsensusalgoritmer när en ledare slutar fungera.
Rör och filter Delar upp komplex databehandling i en serie oberoende faser för att uppnå ett specifikt resultat. Det separata ansvaret för varje steg möjliggör att fokus hålls och undviker distraktion av sammanblandad databehandling.
Prioritetskö Säkerställer att objekt med högre prioritet bearbetas och slutförs före objekt med lägre prioritet. Genom att separera objekt baserat på affärsprioritet kan du fokusera tillförlitlighetsarbetet på det mest kritiska arbetet.
Publisher/Prenumerant Frikoppla komponenterna i en arkitektur genom att ersätta direkt kommunikation mellan klient och tjänster med kommunikation via en mellanliggande meddelandeförmedlare eller händelsebuss.
Köbaserad belastningsutjämning Styr nivån för inkommande begäranden eller uppgifter genom att buffrar dem i en kö och låter köprocessorn hantera dem i en kontrollerad takt. Den här metoden kan ge motståndskraft mot plötsliga toppar i efterfrågan genom att koppla bort ankomsten av uppgifter från bearbetningen. Det kan också isolera fel i köbearbetningen så att de inte påverkar intaget.
Ratebegränsning Styr hastigheten för klientbegäranden för att minska begränsningsfel och undvika obundna återförsök på felscenarier. Den här taktiken skyddar klienten genom att erkänna begränsningarna och kostnaderna för att kommunicera med en tjänst när tjänsten är utformad för att undvika att nå angivna gränser. Det fungerar genom att styra antalet och/eller storleken på åtgärder som skickas till tjänsten under en viss tidsperiod.
försök igen Åtgärdar fel som kan vara kortvariga eller tillfälliga genom att försöka upprepa vissa operationer på ett kontrollerat sätt. Att minimera tillfälliga fel i ett distribuerat system är en viktig teknik för att förbättra en arbetsbelastnings motståndskraft.
Saga-distribuerade transaktioner Samordnar långvariga och potentiellt komplexa transaktioner genom att dela upp arbetet i sekvenser av mindre, oberoende transaktioner. Varje transaktion måste också ha kompensationsåtgärder för att åtgärda fel vid körning och bibehålla integriteten. Eftersom monolitiska transaktioner i flera distribuerade system vanligtvis är omöjliga, ger det här mönstret konsekvens och tillförlitlighet genom att implementera atomitet och kompensation.
Schemaläggaragentövervakare Distribuerar och omfördelar effektivt uppgifter i ett system baserat på observerbara faktorer i systemet. Det här mönstret använder hälsomått för att identifiera fel och omdirigera uppgifter till en felfri agent för att minimera effekterna av ett fel.
Sekventiell konvoj Upprätthåller samtidiga inkommande meddelanden samtidigt som bearbetningen stöds i en definierad ordning. Det här mönstret kan eliminera konkurrensförhållanden som är svåra att felsöka, omtvistad meddelandehantering eller andra lösningar för att hantera felaktigt ordnade meddelanden som kan leda till fel.
Sharding Dirigerar belastningen till ett specifikt logiskt mål för att hantera den specifika begäran, vilket aktiverar samlokalisering för optimering. Eftersom data eller bearbetningen är isolerad till datapartitionen förblir ett fel i en datapartition isolerat till just den datapartitionen.
Strangler-figur Tillhandahåller en metod för att systematiskt ersätta komponenterna i ett system som körs med nya komponenter, ofta under en migrering eller modernisering av systemet. Det här mönstrets inkrementella metod kan bidra till att minska riskerna under en övergång.
Begränsning Begränsar hastigheten eller dataflödet för inkommande begäranden till en resurs eller komponent. Du kan utforma gränserna för att förhindra resursöverbelastning som kan leda till fel. Du kan också använda det här mönstret som en kontrollmekanism i en kontrollerad nedbrytningsplan.

Nästa steg

Granska designmönster för arkitektur som stöder andra Azure Well-Architected Framework-pelare: