Designmönster för molnet
De här designmönstren är användbara när du vill skapa tillförlitliga, skalbara och säkra program i molnet.
Varje mönster beskriver problemet som mönstret är avsett att hantera, överväganden när du ska tillämpa mönstret och ett exempel baserat på Microsoft Azure. De flesta mönster innehåller kodexempel eller kodfragment som visar hur du implementerar mönstret i Azure. De flesta mönster är dock relevanta för alla distribuerade system, oavsett om de finns på Azure eller andra molnplattformar.
Utmaningar inom molnutveckling
DatahanteringDatahantering är det viktigaste elementet i molnprogram och påverkar de flesta kvalitetsattributen. Data finns vanligtvis på olika platser och på flera servrar för prestanda, skalbarhet eller tillgänglighet. Detta kan innebära olika utmaningar. Till exempel måste data hållas konsekventa, och data behöver ofta synkroniseras mellan olika platser. |
|
Design och implementeringBra design omfattar konsekvens och konsekvens i komponentdesign och -distribution, underhållbarhet för att förenkla administration och utveckling samt återanvändning så att komponenter och undersystem kan användas i andra program och scenarier. Beslut som fattas under design- och implementeringsfasen påverkar avsevärt kvaliteten och den totala ägandekostnaden för molnbaserade program och tjänster. |
|
MeddelandetjänsterMolnprogrammens distribuerade natur kräver en meddelandeinfrastruktur som ansluter komponenterna och tjänsterna, helst löst kopplade för att maximera skalbarheten. Asynkrona meddelanden används ofta och ger många fördelar, men det medför även utmaningar som att beställa meddelanden, hantering av giftmeddelanden, idempotens med mera. |
Katalog med mönster
Mönster | Sammanfattning | Kategori |
---|---|---|
Ambassadör | Skapa hjälpkomponenttjänster som skickar nätverksförfrågningar åt en konsumenttjänst eller ett konsumentprogram. | Design och implementering Verksamhetsutveckling |
Skyddande lager | Implementera en fasad eller adapterlager mellan ett modernt program och ett äldre system. | Design och implementering Verksamhetsutveckling |
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. | Meddelandetjänster |
Serverdelar för klienter | Skapa separata serverdelstjänster som ska förbrukas av specifika program eller gränssnitt i klientdelen. | Design och implementering |
Bulkhead | Isolera element i ett program i pooler så att de andra fortfarande fungerar om det skulle uppstå ett fel i ett element. | Tillförlitlighet |
Cachereservera | Läs in data på begäran till en cache från ett datalager. | Datahantering Prestandaeffektivitet |
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. | Meddelanden Prestandaeffektivitet |
Kretsbrytare | Hantera fel som kan ta varierande lång tid att lösa vid anslutning till en fjärrtjänst eller fjärresurs. | Tillförlitlighet |
Anspråkskontroll | Dela upp ett stort meddelande till en anspråkskontroll och en nyttolast för att undvika att överbelasta en meddelandebuss. | Meddelandetjänster |
Kompenserande transaktion | Ångra arbete som utförts i en serie steg och som tillsammans eventuellt definierar en konsekvent åtgärd. | Tillförlitlighet |
Konkurrerande konsumenter | Gör så att flera samtidiga användare kan bearbeta meddelanden som tas emot på samma meddelandekanal. | Meddelandetjänster |
Konsolidering av beräkningsresurser | Konsolidera flera aktiviteter eller åtgärder i en enda beräkningsenhet. | Design och implementering |
CQRS | Åtskilj åtgärder som läser data från åtgärder som uppdaterar data via separata gränssnitt. | Datahantering Design och implementering Prestandaeffektivitet |
Distributionsstämplar | Distribuera flera oberoende kopior av programkomponenter, inklusive datalager. | Tillförlitlighet, Prestandaeffektivitet |
Konfiguration av Edge-arbetsbelastning | Det stora utbudet av system och enheter på arbetsytan kan göra arbetsbelastningskonfigurationen till ett svårt problem. | Design och implementering |
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. | Datahantering Prestandaeffektivitet |
Externt konfigurationslager | Flytta konfigurationsinformation utanför programpaketet för distribution till en central plats. | Design och implementering Verksamhetsutveckling |
Federerade identiteter | Delegera autentiseringen till en extern identitetsleverantör. | Säkerhet |
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. | Säkerhet |
Gateway-samling | Använd en gateway för att slå samman flera enskilda förfrågningar till en enda begäran. | Design och implementering Verksamhetsutveckling |
Gateway-avlastning | Avlasta delade eller specialiserade tjänstfunktioner till en gateway-proxy. | Design och implementering Verksamhetsutveckling |
Gateway-routning | Dirigera förfrågningar till flera tjänster med hjälp av en enda slutpunkt. | Design och implementering Verksamhetsutveckling |
Geodes | Distribuera serverdelstjänster till en uppsättning geografiska noder, som var och en kan betjäna alla klientbegäranden i alla regioner. | Tillförlitlighet, Verksamhetsutveckling |
Övervakning av slutpunktshälsa | Implementera funktionskontroller i ett program som externa verktyg kan komma åt via exponerade slutpunkter med jämna mellanrum. | Tillförlitlighet, Verksamhetsutveckling |
Indextabell | Skapa index över fälten i datalager som ofta refereras i frågor. | Datahantering Prestandaeffektivitet |
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. | Design och implementering Tillförlitlighet |
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. | Datahantering Utmärkt driftseffektivitet, Prestandaeffektivitet |
Rör och filter | Dela upp en aktivitet som utför komplex bearbetningen i ett antal olika element som kan återanvändas. | Design och implementering Meddelandetjänster |
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. | Meddelanden Prestandaeffektivitet |
Utgivare/prenumerant | Aktivera ett program för att informera flera intresserade kunder om evenemang asynkront, utan att koppla avsändarna till mottagarna. | Meddelandetjänster |
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. | Tillförlitlighet, Meddelanden Återhämtning Prestandaeffektivitet |
Mönster för hastighetsbegränsning | Begränsningsmö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. | Tillförlitlighet |
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. | Tillförlitlighet |
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. | Meddelandetjänster |
Scheduler-agentövervakare | Samordna en uppsättning åtgärder i en distribuerad uppsättning tjänster och andra fjärranslutna resurser. | Meddelanden Tillförlitlighet |
Sekventiell konvoj | Bearbeta en uppsättning relaterade meddelanden i en definierad ordning, utan att blockera bearbetningen av andra grupper av meddelanden. | Meddelandetjänster |
Horisontell partitionering | Dela upp ett datalager i en uppsättning horisontella partitioner eller delar. | Datahantering Prestandaeffektivitet |
Sidovagn | Distribuera komponenter i ett program i en separat process eller container för att ge isolering och inkapsling. | Design och implementering Verksamhetsutveckling |
Värddator för statiskt innehåll | Distribuera statiskt innehåll till en molnbaserad lagringstjänst som kan leverera innehållet direkt till klienten. | Design och implementering Datahantering Prestandaeffektivitet |
Strangler-figur | Migrera ett äldre system stegvis genom att gradvis ersätta specifika delar av funktionerna med nya program och tjänster. | Design och implementering Verksamhetsutveckling |
Begränsning | Begränsa förbrukningen av resurser i en instans av ett program, en enskild klientorganisation eller i hela tjänsten. | Tillförlitlighet, Prestandaeffektivitet |
Valet-nyckel | Använd en token eller nyckel som ger klienter begränsad direktåtkomst till en specifik resurs eller tjänst. | Datahantering Säkerhet |
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för