Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 tillförlitlighet, säkerhet, kostnader och åtgärder. Om de inte minimeras kommer riskerna så småningom att leda till ineffektivitet i prestanda. 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 pelaren Prestandaeffektivitet hanterar skalbarhet, prestandajustering, uppgiftsprioritering och borttagning av flaskhalsar.
I följande tabell sammanfattas designmönster för arkitektur som stöder målen för prestandaeffektivitet.
| Mönster | Sammanfattning |
|---|---|
| Asynkront begärandesvar | Förbättrar svarstiden och skalbarheten för system genom att avkoda begärande- och svarsfaserna för interaktioner för processer som inte behöver omedelbara svar. Med hjälp av ett asynkront mönster kan du maximera samtidigheten på serversidan. Du kan använda det här mönstret för att schemalägga arbete som ska slutföras som kapaciteten tillåter. |
| 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. Med den här separationen kan du optimera på ett sätt som kanske inte är möjligt med ett delat tjänstlager. När du hanterar enskilda klienter på olika sätt kan du optimera prestanda för en specifik klients begränsningar och funktioner. |
| Skiljevägg | Introducerar segmentering mellan komponenter för att isolera explosionsradien för fel. Med den här designen kan varje skott vara individuellt skalbart för att uppfylla behoven för den uppgift som kapslas in i skottet. |
| 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. Det här mönstret är särskilt användbart med läsintensiva data som inte ändras ofta och som kan tolerera en viss inaktuellhet. Målet med den här implementeringen är att ge bättre prestanda i systemet överlag genom att avlasta den här typen av data till en cache i stället för att hämta dem från datalagret. |
| Koreografi | Samordnar beteendet för autonoma distribuerade komponenter i en arbetsbelastning med hjälp av decentraliserad, händelsedriven kommunikation. Det här mönstret kan vara ett alternativ när prestandaflaskhalsar uppstår i en centraliserad orkestreringstopologi. |
| Kretsbrytaren | Förhindrar kontinuerliga begäranden till ett beroende som inte fungerar eller inte är tillgängligt. En metod för återförsök på fel kan leda till överdriven resursanvändning under beroendeåterställning och kan även överbelasta prestanda för ett beroende som försöker återställa. |
| Anspråkskontroll | Separerar data från meddelandeflödet, vilket ger ett sätt att separat hämta data som är relaterade till ett meddelande. Det här mönstret förbättrar effektiviteten och prestandan för meddelandeutgivare, prenumeranter och själva meddelandebussen när systemet hanterar stora datanyttolaster. Det fungerar genom att minska storleken på meddelanden och se till att konsumenterna hämtar nyttolastdata endast om det behövs och vid en lämplig tidpunkt. |
| Konkurrerande konsumenter | Tillämpar distribuerad och samtidig bearbetning för att effektivt hantera objekt i en kö. Den här modellen stöder distribution av belastning över alla konsumentnoder och dynamisk skalning som baseras på ködjup. |
| Konsolidering av beräkningsresurser | Optimerar och konsoliderar beräkningsresurser genom att öka densiteten. Det här mönstret kombinerar flera program eller komponenter i en arbetsbelastning i en delad infrastruktur. Den här konsolideringen maximerar användningen av beräkningsresurser genom att använda extra nodkapacitet för att minska överetablering. Containerorkestrerare är ett vanligt exempel. Stora (lodrätt skalade) beräkningsinstanser används ofta i resurspoolen för dessa infrastrukturer. |
| CQRS (Command and Query Responsibility Segregation) | Separerar läs- och skrivåtgärder för ett programs datamodell. Den här separationen möjliggör riktade prestanda- och skalningsoptimeringar för varje åtgärds specifika syfte. Den här designen är mest användbar i program som har ett högt läs-till-skriv-förhållande. |
| Distributionsstämplar | Tillhandahåller en metod för att släppa en specifik version av ett program och dess infrastruktur som en kontrollerad distributionsenhet, baserat på antagandet att samma eller olika versioner kommer att distribueras samtidigt. Det här mönstret justeras ofta efter de definierade skalningsenheterna i din arbetsbelastning: eftersom ytterligare kapacitet behövs utöver vad en enskild skalningsenhet tillhandahåller distribueras ytterligare en distributionsstämpel för utskalning. |
| Händelsekällor | Behandlar tillståndsändring som en serie händelser och samlar in dem i en oföränderlig logg med endast tillägg. Beroende på din arbetsbelastning kan det här mönstret, vanligtvis kombinerat med CQRS, en lämplig domändesign och strategisk ögonblicksbild, förbättra prestandan. Prestandaförbättringar beror på atomiska tilläggsåtgärder och undvikande av databaslåsning för skrivningar och läsningar. |
| 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 du avlastar användarhantering och autentisering kan du ägna programresurser åt andra prioriteringar. |
| Gatekeeper | Avlastar bearbetning av begäranden som är specifikt för säkerhet och åtkomstkontroll före och efter vidarebefordran av begäran till en serverdelsnod. Det här mönstret används ofta för att implementera begränsning på gatewaynivå i stället för att implementera hastighetskontroller på nodnivå. Samordningen av hastighetstillståndet mellan alla noder fungerar inte i sig. |
| Gateway-sammansättning | Förenklar klientinteraktioner med din arbetsbelastning genom att aggregera anrop till flera serverdelstjänster i en enda begäran. Den här designen kan medföra mindre svarstid än en design där klienten upprättar flera anslutningar. Cachelagring är också vanligt i aggregeringsimplementeringar eftersom det minimerar anrop till serverdelssystem. |
| Gateway-avlastning | Avlastar bearbetning av begäranden till en gatewayenhet före och efter vidarebefordran av begäran till en serverdelsnod. Genom att lägga till en avlastningsgateway i begärandeprocessen kan du använda färre resurser per nod eftersom funktionaliteten är centraliserad vid gatewayen. Du kan optimera implementeringen av de avlastade funktionerna oberoende av programkoden. Avlastade funktioner som tillhandahålls av plattformen är förmodligen redan mycket högpresterande. |
| Gatewayroutning | Dirigerar inkommande nätverksbegäranden till olika serverdelssystem baserat på begärande avsikter, affärslogik och serverdelstillgänglighet. Med gatewayroutning kan du distribuera trafik mellan noder i systemet för att balansera belastningen. |
| 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. Du kan använda den för att hantera ditt program från en region som är närmast din distribuerade användarbas. Detta minskar svarstiden genom att eliminera fjärrtrafik och eftersom du bara delar infrastruktur bland användare som för närvarande använder samma geode. |
| 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 dessa slutpunkter för att förbättra belastningsutjämningen genom att dirigera trafik till endast noder som är verifierade som felfria. Med ytterligare konfiguration kan du också hämta mått på tillgänglig nodkapacitet. |
| 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. Klienter pekar på sin shard, partition eller slutpunkt, som kan aktivera dynamisk datapartitionering för prestandaoptimering. |
| Materialiserad vy | Använder förkomputerade vyer av data för att optimera datahämtningen. De materialiserade vyerna lagrar resultatet av komplexa beräkningar eller frågor utan att databasmotorn eller klienten behöver beräknas om för varje begäran. Den här designen minskar den totala resursförbrukningen. |
| 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 prestandaarbetet på det mest tidskänsliga arbetet. |
| Utgivare/prenumerant | Frikoppla komponenter i en arkitektur genom att ersätta direkt kommunikation från klient till tjänst eller klient-till-tjänst med kommunikation via en mellanliggande meddelandekö eller händelsebuss. Genom att koppla bort utgivare från konsumenter kan du optimera beräkningen och koden specifikt för den uppgift som konsumenten behöver utföra för det specifika meddelandet. |
| Queue-Based 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 möjliggör avsiktlig design av dataflödesprestanda eftersom intaget av begäranden inte behöver korrelera med den hastighet som de bearbetas i. |
| Schemaläggarens agentövervakare | Distribuerar och distribuerar effektivt uppgifter i ett system baserat på faktorer som kan observeras i systemet. Det här mönstret använder prestanda- och kapacitetsmått för att identifiera aktuell användning och dirigera uppgifter till en agent som har kapacitet. Du kan också använda den för att prioritera körningen av arbete med högre prioritet framför arbete med lägre prioritet. |
| Horisontell partitionering | Dirigerar belastningen till ett specifikt logiskt mål för att hantera en specifik begäran, vilket aktiverar samlokalisering för optimering. När du använder horisontell partitionering i din skalningsstrategi isoleras data eller bearbetningen till en shard, så den konkurrerar endast om resurser med andra begäranden som dirigeras till fragmentet. Du kan också använda horisontell partitionering för att optimera baserat på geografi. |
| Sidovagn | Utökar funktionerna i ett program genom att kapsla in icke-primära eller övergripande uppgifter i en kompletterande process som finns tillsammans med huvudprogrammet. Du kan flytta övergripande uppgifter till en enda process som kan skalas över flera instanser av huvudprocessen, vilket minskar behovet av att distribuera duplicerade funktioner för varje instans av programmet. |
| Värddator för statiskt innehåll | Optimerar leveransen av statiskt innehåll till arbetsbelastningsklienter med hjälp av en värdplattform som är utformad för detta ändamål. Om du avlastar ansvaret till en extern värd kan du minska överbelastningen och du kan bara använda din programplattform för att leverera affärslogik. |
| Begränsar hastigheten eller dataflödet för inkommande begäranden till en resurs eller komponent. När systemet är under hög efterfrågan hjälper det här mönstret till att minska överbelastningen som kan leda till flaskhalsar i prestanda. Du kan också använda den för att proaktivt undvika scenarier med bullriga grannar. | |
| Valet-nyckel | Ger säkerhetsbegränsad åtkomst till en resurs utan att använda en mellanliggande resurs för att proxya åtkomsten. När du gör det avlastas bearbetningen som en exklusiv relation mellan klienten och resursen utan att det krävs en ambassadörskomponent som behöver hantera alla klientbegäranden på ett högpresterande sätt. Fördelen med att använda det här mönstret är viktigast när proxyn inte lägger till värde i transaktionen. |
Nästa steg
Granska designmönster för arkitektur som stöder de andra Grundpelarna i Azure Well-Architected Framework: