Cloud Design-mönster
Arkitekter utformar arbetsbelastningar genom att kombinera plattformstjänster, funktioner och kod för att uppfylla funktionella och icke-funktionella krav i arbetsbelastningar. Att utforma arbetsbelastningar kräver förståelse för dessa arbetsbelastningskrav och väljer sedan topologier och metoder för att lösa de utmaningar som arbetsbelastningens begränsningar medför. Molndesignmönster som hanterar många vanliga utmaningar.
Systemdesignen är kraftigt genomsyrad av designmönster. Infrastruktur, kod och distribuerade system är alla utformade kring en kombination av designmönster. Dessa designmönster är användbara för att skapa tillförlitliga, säkra, kostnadsoptimerade, driftsanpassade och högpresterande program i molnet.
Dessa designmönster är inte specifika för någon teknik och är relevanta för alla distribuerade system, oavsett om de finns på Azure, andra molnplattformar och vissa kan till och med omfatta lokala arbetsbelastningar eller hybridarbetsbelastningar.
Molndesignmönster hjälper designprocessen
Molnarbetsbelastningar är utsatta för felaktigheter i distribuerad databehandling. Några exempel på molndesignfel är:
- Nätverket är tillförlitligt
- Svarstiden är noll
- Bandbredden är oändlig
- Nätverket är säkert
- Topologin ändras inte
- Det finns en administratör
- Komponentversioner är enkla
- Implementeringen av observerbarhet kan fördröjas
Designmönster eliminerar inte begrepp som dessa, men kan bidra till att öka medvetenheten, kompensationer och minskningar av dem. Varje molnmönster har sina egna kompromisser. Du måste vara mer uppmärksam på varför du väljer ett visst mönster än hur du implementerar det.
En välkonstruerad arbetsbelastning tar hänsyn till hur de här designmönstren i hela branschen ska användas som grundläggande byggstenar för arbetsbelastningsdesign. Varje Azure-Well-Architected-pelare representeras i dessa designmönster, ofta med designmönstret som introducerar kompromisser med målen för andra pelare.
Katalog med mönster
Varje mönster i den här katalogen beskriver det problem som mönstret åtgärdar, överväganden för att tillämpa mönstret och ett exempel baserat på Microsoft Azure. Vissa mönster innehåller kodexempel eller kodfragment som visar hur du implementerar mönstret i Azure.
Mönster | Sammanfattning | Grundpelare för Azure Well-Architected Framework |
---|---|---|
Ambassadör | Skapa hjälpkomponenttjänster som skickar nätverksförfrågningar åt en konsumenttjänst eller ett konsumentprogram. |
|
Skyddande lager | Implementera en fasad eller adapterlager mellan ett modernt program och ett äldre system. |
|
Asynkront begäransvar | Frikoppla serverdelsbearbetning från en klientdelsvärd, där serverdelsbearbetning måste vara asynkron, men klientdelen fortfarande behöver ett klart svar. |
|
Serverdelar för klienter | Skapa separata serverdelstjänster som ska användas av specifika klientdelsprogram eller gränssnitt. |
|
Bulkhead | Isolera element i ett program i pooler så att de andra fortsätter att fungera om det ena misslyckas. |
|
Cachereservera | Läs in data på begäran till en cache från ett datalager. |
|
Koreografi | Låt varje tjänst bestämma när och hur en affärsåtgärd bearbetas i stället för att vara beroende av en central initierare. |
|
Kretsbrytare | Hantera fel som kan ta varierande lång tid att lösa vid anslutning till en fjärrtjänst eller fjärresurs. |
|
Anspråkskontroll | Dela upp ett stort meddelande till en anspråkskontroll och en nyttolast för att undvika att överbelasta en meddelandebuss. |
|
Kompenserande transaktion | Ångra arbete som utförts i en serie steg och som tillsammans eventuellt definierar en konsekvent åtgärd. |
|
Konkurrerande konsumenter | Gör så att flera samtidiga användare kan bearbeta meddelanden som tas emot på samma meddelandekanal. |
|
Konsolidering av beräkningsresurser | Konsolidera flera uppgifter eller åtgärder till en enda beräkningsenhet. |
|
CQRS | Åtskilj åtgärder som läser data från åtgärder som uppdaterar data via separata gränssnitt. |
|
Distributionsstämplar | Distribuera flera oberoende kopior av programkomponenter, inklusive datalager. |
|
Konfiguration av Edge-arbetsbelastning | Centralisera konfigurationen för att hantera utmaningen med att konfigurera flera system och enheter på verkstadsgolvet. | |
Händelsekällor | Ett datalager med endast tilläggning används till att registrera en hel serie händelser som beskriver åtgärder på data i domänen. |
|
Externt konfigurationslager | Flytta konfigurationsinformation utanför programpaketet för distribution till en central plats. |
|
Federerade identiteter | Delegera autentiseringen till en extern identitetsleverantör. |
|
Gatekeeper | Skydda program och tjänster med hjälp av en dedikerad värdinstans som fungerar som koordinator mellan klienter och programmet eller tjänsten, validerar och åtgärdar förfrågningar och skickar förfrågningar och data mellan dem. |
|
Gateway-samling | Använd en gateway för att slå samman flera enskilda förfrågningar till en enda begäran. |
|
Gateway-avlastning | Avlasta delade eller specialiserade tjänstfunktioner till en gateway-proxy. |
|
Gateway-routning | Dirigera förfrågningar till flera tjänster med hjälp av en enda slutpunkt. |
|
Geode | Distribuera serverdelstjänster till en uppsättning geografiska noder, som var och en kan betjäna alla klientbegäranden i alla regioner. |
|
Övervakning av slutpunktshälsa | Implementera funktionskontroller i ett program som externa verktyg kan komma åt via exponerade slutpunkter med jämna mellanrum. |
|
Indextabell | Skapa index över fälten i datalager som ofta refereras i frågor. |
|
Val av ledare | Samordna de åtgärder som utförs av en samling samverkande uppgiftsinstanser i ett distribuerat program genom att välja en instans som ska ansvara för att hantera de andra instanserna. |
|
Materialiserad vy | Generera förifyllda vyer över data i ett eller flera datalager när data inte har ett optimalt format för de frågeåtgärder som ska utföras. |
|
Meddelandebrygga | Skapa en mellanhand för att möjliggöra kommunikation mellan meddelandesystem som annars är inkompatibla på grund av protokoll eller format. |
|
Rör och filter | Dela upp en aktivitet som utför komplex bearbetningen i ett antal olika element som kan återanvändas. |
|
Prioritetskö | Prioritera förfrågningar som skickas till tjänster så att förfrågningar med högre prioritet tas emot och bearbetas snabbare än de med lägre prioritet. |
|
Utgivare/prenumerant | Aktivera ett program för att informera flera intresserade kunder om evenemang asynkront, utan att koppla avsändarna till mottagarna. |
|
karantän | Se till att externa tillgångar uppfyller en teamavtalad kvalitetsnivå innan de får tillåtelse att användas i arbetsflödet. |
|
Köbaserad belastningsutjämning | Använd en kö som fungerar som en buffert mellan en aktivitet och en tjänst den anropar för att utjämna återkommande tunga belastningar. |
|
Mönster för hastighetsbegränsning | Begränsande mönster som hjälper dig att undvika eller minimera begränsningsfel relaterade till dessa begränsningsgränser och för att hjälpa dig att mer exakt förutsäga dataflödet. |
|
Försök igen | Gör så att ett program kan hantera förväntade, tillfälligt fel vid försök att ansluta till en tjänst eller en nätverksresurs, genom att transparent försöka utföra den misslyckade åtgärden igen. |
|
Saga | Hantera datakonsekvens mellan mikrotjänster i distribuerade transaktionsscenarier. En saga är en sekvens med transaktioner som uppdaterar varje tjänst och publicerar ett meddelande eller en händelse för att utlösa nästa transaktionssteg. |
|
Scheduler-agentövervakare | Samordna en uppsättning åtgärder i en distribuerad uppsättning tjänster och andra fjärranslutna resurser. |
|
Sekventiell konvoj | Bearbeta en uppsättning relaterade meddelanden i en definierad ordning, utan att blockera bearbetningen av andra grupper av meddelanden. |
|
Horisontell partitionering | Dela upp ett datalager i en uppsättning horisontella partitioner eller delar. |
|
Sidovagn | Distribuera komponenter i ett program i en separat process eller container för att ge isolering och inkapsling. |
|
Värddator för statiskt innehåll | Distribuera statiskt innehåll till en molnbaserad lagringstjänst som kan leverera innehållet direkt till klienten. |
|
Strangler-figur | Migrera ett äldre system stegvis genom att gradvis ersätta specifika delar av funktionerna med nya program och tjänster. |
|
Begränsning | Begränsa förbrukningen av resurser i en instans av ett program, en enskild klientorganisation eller i hela tjänsten. |
|
Valet-nyckel | Använd en token eller nyckel som ger klienter begränsad direktåtkomst till en specifik resurs eller tjänst. |
|
Nästa steg
Granska designmönstren från perspektivet för Azure Well-Architected Pillar som mönstret försöker optimera.