Dela via


Designa för att skala ut

Utforma programmet så att det kan skala horisontellt

En primär fördel med molnet är elastisk skalning – möjligheten att använda så mycket kapacitet som du behöver, skala ut när belastningen ökar och skala in när den extra kapaciteten inte behövs. Designa programmet så att det kan skalas vågrätt, där nya instanser läggs till eller tas bort efter behov.

Rekommendationer

Undvik instansvaraktighet. Varaktighet, eller sessionstillhörighet, är när förfrågningar från samma klient alltid dirigeras till samma server. Fasthet begränsar programmets möjlighet att skala ut. Trafik från en högvolymanvändare distribueras till exempel inte mellan instanser. Orsaker till varaktighet kan vara lagring av sessionstillstånd i minnet och användning av datorspecifika nycklar för kryptering. Kontrollera att alla instanser kan hantera alla förfrågningar.

Identifiera flaskhalsar. Att skala ut är inte en magisk åtgärd för varje prestandaproblem. Om det exempelvis är serverdelsdatabasen som är flaskhalsen hjälper det inte att lägga till fler webbservrar. Identifiera och lös flaskhalsarna i systemet först innan du försöker lösa problemet med hjälp av fler instanser. Tillståndskänsliga delar i systemet är den mest troliga orsaken till flaskhalsar.

Dela upp arbetsbelastningar enligt skalbarhetskrav. Program består ofta av flera arbetsbelastningar med olika skalningskrav. Ett program kan till exempel ha en offentlig webbplats och en separat administrationswebbplats. På den offentliga webbplatsen kan det uppstå plötsliga toppar i trafiken, medan administrationsplatsen har en mindre, mer förutsägbar belastning.

Avlasta naturligt asynkrona uppgifter. Uppgifter som att skicka e-post, åtgärder där användaren inte behöver ett omedelbart svar och integrering med andra system är alla bra platser för att använda asynkrona meddelandemönster.

Omfördela resurskrävande uppgifter. Uppgifter som kräver mycket CPU- eller I/O-resurser bör flyttas till bakgrundsjobb, när så är möjligt, för att minimera belastningen på klientdelen som hanterar användarbegäranden.

Använd inbyggda autoskalningsfunktioner. Många beräkningstjänster i Azure har inbyggt stöd för autoskalning. Om programmet har en förutsägbar, vanlig arbetsbelastning kan du skala ut enligt ett schema. Du kan exempelvis skala ut under kontorstid. Om arbetsbelastningen däremot inte är förutsägbar använder du prestandamått som CPU eller kölängd för begäranden för att utlösa autoskalning. Information om bästa metoder för autoskalning finns i Automatisk skalning.

Överväg aggressiv autoskalning för kritiska arbetsbelastningar. När det gäller kritiska arbetsbelastningar vill du ligga steget före efterfrågan. Det är bättre att lägga till nya instanser snabbt vid hög belastning för att hantera den ytterligare trafiken och sedan gradvis skala tillbaka.

Utforma för att skala in. Kom ihåg att med elastisk skalning kommer programmet att ha perioder då det skalar in, när instanser tas bort. Programmet måste hantera borttagning av instanser på ett smidigt sätt. Följande är några metoder för att hantera minskning av skala:

  • Lyssna efter avstängningshändelser (i förekommande fall) och avsluta korrekt.
  • Klienter/användare av en tjänst bör ha stöd för hantering av tillfälliga fel och omförsök.
  • För uppgifter som körs under längre tid kan du överväga att dela upp arbetet med hjälp av kontrollpunkter eller mönstret Rör och filter.
  • Placera arbetsobjekt i en kö så att en annan instans kan hämta upp arbetet om en instans tas bort mitt under bearbetningen.

Överväg att skala för redundans. Utskalning kan förbättra programmets tillförlitlighet. Överväg till exempel att skala ut över flera tillgänglighetszoner, till exempel med hjälp av zonredundanta tjänster. Den här metoden kan förbättra programmets dataflöde och ge återhämtning om en zon upplever ett avbrott.