AWS Solutions Architect · Lektion

Provisionerad kapacitet jämfört med On-Demand

Välj mellan provisionerad genomströmning med autoskalning och On-Demand-läge utifrån trafikens förutsägbarhet och kostnad.

Lektion 2 av 413 steg

Provisionerad kapacitet jämfört med On-Demand är en gratis lektion i AWS Solutions Architect på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för AWS Solutions Architect, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i AWS Solutions Architect innehåller totalt 4 lektioner.

DynamoDB:s kapacitetsenheter förklarade

DynamoDB mäter genomströmning i Read Capacity Units (RCU:er) och Write Capacity Units (WCU:er). En RCU tillåter en starkt konsistent läsning per sekund (eller två eventual consistency-läsningar) för objekt på högst 4 KB. En WCU tillåter en skrivning per sekund för objekt på högst 1 KB.

För större objekt skalas kostnaden proportionellt: en skrivning på 10 KB kostar 10 WCU:er, och en starkt konsistent läsning på 10 KB kostar 3 RCU:er (ceil(10/4) = 3). Det är viktigt att förstå kapacitetsenheter för att kunna uppskatta kostnader och diagnostisera throttlingfel med ProvisionedThroughputExceededException.

Provisioned-kapacitetsläge

I läget Provisioned Capacity anger du exakt hur många RCU:er och WCU:er tabellen ska ha stöd för. DynamoDB reserverar denna genomströmning och debiterar dig för den oavsett om du använder den eller inte. Om applikationen överskrider den provisionerade kapaciteten begränsas förfrågningarna genom throttling och returnerar en ProvisionedThroughputExceededException.

Provisioned-läget passar bäst för arbetsbelastningar med förutsägbar och stabil trafik. Kostnaden per enhet är lägre än i On-Demand-läget, och du kan minska kostnaden ytterligare genom att köpa DynamoDB Reserved Capacity (ett- eller treåriga åtaganden med upp till 76 % rabatt).

# Create a table with provisioned capacity
aws dynamodb create-table \
  --table-name Products \
  --attribute-definitions AttributeName=ProductId,AttributeType=S \
  --key-schema AttributeName=ProductId,KeyType=HASH \
  --provisioned-throughput ReadCapacityUnits=100,WriteCapacityUnits=50

On-Demand-kapacitetsläge

I läget On-Demand skalar DynamoDB automatiskt för att hantera vilken trafiknivå som helst, utan någon kapacitetsplanering. Du betalar per förfrågan: för varje faktiskt förbrukad RRU (read request unit) och WRU (write request unit). Det finns ingen provisionerad kapacitet att hantera och ingen throttling på grund av provisionerade begränsningar.

On-Demand-läget passar bäst för: oförutsägbara arbetsbelastningar eller arbetsbelastningar med kraftiga trafiktoppar, nya tabeller där trafikmängden är okänd samt utvecklings- och testmiljöer med sporadisk åtkomst. Kostnaden per förfrågan är högre än i Provisioned-läget, så för stabila arbetsbelastningar med hög genomströmning är Provisioned-läget mer ekonomiskt.

# Create a table in on-demand mode
aws dynamodb create-table \
  --table-name Events \
  --attribute-definitions AttributeName=EventId,AttributeType=S \
  --key-schema AttributeName=EventId,KeyType=HASH \
  --billing-mode PAY_PER_REQUEST

Växla mellan kapacitetslägen

Du kan när som helst växla en tabell mellan lägena Provisioned och On-Demand via konsolen eller CLI. Du kan dock bara växla läge en gång var 24:e timme. Efter växling till On-Demand behåller tabellen den tidigare högsta provisionerade kapaciteten som sin initiala genomströmningsnivå, vilket skyddar mot omedelbar throttling om trafiken redan är hög.

En vanlig strategi är att använda On-Demand under den första lanseringen när trafikmönstren är okända och sedan växla till Provisioned med Auto Scaling när trafiken blir förutsägbar, för att minska kostnaden.

# Switch a table to on-demand billing mode
aws dynamodb update-table \
  --table-name Products \
  --billing-mode PAY_PER_REQUEST

DynamoDB Auto Scaling för Provisioned-läget

DynamoDB Auto Scaling justerar automatiskt dina provisionerade RCU:er och WCU:er utifrån den faktiska trafiken. Du anger en målnivå för utnyttjandegraden (till exempel 70 %) och ett kapacitetsintervall med minimi- och maxvärde. En policy för Application Auto Scaling övervakar tabellens förbrukade kapacitet och justerar den provisionerade kapaciteten för att upprätthålla målnivån.

Auto Scaling reagerar på varaktiga trafikförändringar och kan behöva några minuter för att skala upp. Funktionen hanterar inte plötsliga trafiktoppar särskilt bra – för sådana toppar kan du antingen förvärma kapaciteten manuellt eller använda On-Demand-läget i stället.

# Register table as an auto scaling target
aws application-autoscaling register-scalable-target \
  --service-namespace dynamodb \
  --resource-id 'table/Products' \
  --scalable-dimension dynamodb:table:ReadCapacityUnits \
  --min-capacity 10 \
  --max-capacity 1000

Burst-kapacitet

DynamoDB sparar upp till 5 minuter av oanvänd provisionerad kapacitet som burst-kapacitet. När tabellens trafik tillfälligt överskrider den provisionerade nivån använder DynamoDB kapacitet från burst-poolen för att hantera de extra förfrågningarna utan throttling. När burst-poolen är tömd begränsas efterföljande överskridande förfrågningar genom throttling.

Burst-kapacitet är en kortsiktig buffert och ersätter inte korrekt kapacitetsplanering. Övervaka CloudWatch-måtten ConsumedReadCapacityUnits och ConsumedWriteCapacityUnits för att upptäcka när arbetsbelastningen regelbundet förbrukar burst-kapacitet, och justera den provisionerade genomströmningen därefter.

Throttling och felhantering

När den provisionerade kapaciteten överskrids (och burst-kapaciteten är förbrukad) returnerar DynamoDB ProvisionedThroughputExceededException. AWS SDK:erna innehåller inbyggd återförsökslogik med exponentiell backoff och jitter som automatiskt försöker skicka throttlade förfrågningar igen.

Kontrollera CloudWatch-måtten SystemErrors och ThrottledRequests för att diagnostisera throttling. Om specifika partitionnycklar throttlas medan tabellens totala utnyttjandegrad är låg har du ett problem med en het partition – utforma om partitionnyckeln, lägg till en sortnyckel eller använd write sharding.

Uppskatta kapacitetskrav

Så här uppskattar du kapaciteten för Provisioned-läget:

  • Beräkna antalet skrivningar per sekund vid toppbelastning × genomsnittlig objektstorlek / 1 KB (avrundat uppåt) = nödvändigt antal WCU:er
  • Beräkna antalet läsningar per sekund vid toppbelastning × genomsnittlig objektstorlek / 4 KB (avrundat uppåt) = nödvändigt antal RCU:er (starkt konsistenta); halvera för eventual consistency
  • Lägg till 20–30 % marginal över toppbelastningen för att hantera toppar innan burst-kapaciteten förbrukas

Exempel: 1 000 skrivningar/s av objekt på 2 KB = 2 000 WCU:er. 5 000 läsningar/s av objekt på 8 KB (eventual consistency) = ceil(8/4) × 5 000 / 2 = 5 000 RCU:er.

Reserved Capacity för kostnadsminskning

DynamoDB Reserved Capacity låter dig köpa ett fast antal RCU:er och WCU:er för en ett- eller treårsperiod och betala i förskott för en betydande rabatt (upp till 76 %) jämfört med On-Demand-priser. Reserved Capacity gäller för alla provisionerade tabeller i en region och tillämpas automatiskt på dina timkostnader.

Reserved Capacity gäller endast för Provisioned-läget – du kan inte använda det med On-Demand-läget. Det är det bästa alternativet för att sänka kostnaderna för stabila och förutsägbara arbetsbelastningar som du med tillförsikt kan prognostisera för ett till tre år.

Jämförelse av lägen: beslutsstöd inför provet

Använd detta beslutsstöd för frågor om kapacitetslägen i SAA-C03:

  • On-Demand: oförutsägbar trafik, ny applikation, sporadisk åtkomst, trafik med toppar, när du vill slippa all kapacitetshantering
  • Provisioned: jämn och förutsägbar trafik, kostnadskänslighet, beredskap att hantera kapaciteten, möjlighet att få rabatt genom Reserved Capacity
  • Provisioned + Auto Scaling: förutsägbar basnivå med viss variation, när du vill ha automatisk justering utan manuella ändringar

På provet signalerar nyckelord som 'spiky', 'unpredictable' eller 'minimal operational overhead' On-Demand, medan 'steady traffic' eller 'cost optimisation' signalerar Provisioned.

Adaptiv kapacitet

DynamoDB Adaptive Capacity omfördelar automatiskt genomströmning från kalla partitioner till heta partitioner i realtid. Om en partitionnyckel tar emot mer trafik än sin tilldelade andel lånar den adaptiva kapaciteten genomströmning från underutnyttjade partitioner för att hantera den heta partitionen – så länge tabellens totala kapacitet inte överskrids.

Adaptiv kapacitet är alltid aktiverad och kräver ingen konfiguration. Den minskar throttling av heta partitioner vid måttligt ojämna åtkomstmönster. För kraftigt snedfördelade arbetsbelastningar (till exempel när en partitionnyckel tar emot 90 % av trafiken) räcker adaptiv kapacitet inte till – du måste utforma om partitionnyckeln eller använda write sharding.

Snabbkontroll

Testa dina kunskaper om AWS Solutions Architect-koncepten (SAA-C03) från den här lektionen.

Sammanfattning av lektionen

I den här lektionen har du lärt dig att Provisioned-läget anger fasta RCU:er/WCU:er för förutsägbara arbetsbelastningar till lägre kostnad, att On-Demand-läget skalar automatiskt för oförutsägbar trafik till ett högre pris per förfrågan, samt att Auto Scaling justerar den provisionerade kapaciteten utifrån målangivna utnyttjandegrader. Härnäst går vi igenom Global Secondary Indexes och Local Secondary Indexes för alternativa frågemönster.

Gratis att börja

Lär dig AWS Solutions Architect med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
30
Lektioner
120

Vanliga frågor

Är lektionen ”Provisionerad kapacitet jämfört med On-Demand” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen AWS Solutions Architect, inklusive ”Provisionerad kapacitet jämfört med On-Demand”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i AWS Solutions Architect innehåller totalt 4 lektioner.

Vad lär jag mig i ”Provisionerad kapacitet jämfört med On-Demand”?

Välj mellan provisionerad genomströmning med autoskalning och On-Demand-läge utifrån trafikens förutsägbarhet och kostnad. Ni övar på AWS Solutions Architect med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig AWS Solutions Architect?

Du behöver inga förkunskaper. Utbildningen i AWS Solutions Architect på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Provisionerad kapacitet jämfört med On-Demand”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här AWS Solutions Architect-lektionen?

Ja. Varje AWS Solutions Architect-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Tabeller, objekt och primärnycklar
  2. Provisionerad kapacitet jämfört med On-Demand
  3. Globala sekundära index och lokala sekundära index
  4. DynamoDB Streams och globala tabeller
← Tillbaka till AWS Solutions Architect