Pojemność aprowizowana a tryb On-Demand
Wybiorą między aprowizowaną przepustowością z automatycznym skalowaniem a trybem On-Demand na podstawie przewidywalności ruchu i kosztów.
Pojemność aprowizowana a tryb On-Demand to bezpłatna lekcja Cloud & IT Cert Prep na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cloud & IT Cert Prep, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.
Wyjaśnienie jednostek przepustowości DynamoDB
DynamoDB mierzy przepustowość za pomocą jednostek przepustowości odczytu (RCU) i jednostek przepustowości zapisu (WCU). Jedna RCU umożliwia wykonanie jednego silnie spójnego odczytu na sekundę (lub dwóch ostatecznie spójnych odczytów) dla elementów o rozmiarze do 4 KB. Jedna WCU umożliwia wykonanie jednego zapisu na sekundę dla elementów o rozmiarze do 1 KB.
W przypadku większych elementów koszt skaluje się proporcjonalnie: zapis elementu o rozmiarze 10 KB kosztuje 10 WCU, a silnie spójny odczyt elementu o rozmiarze 10 KB kosztuje 3 RCU (ceil(10/4) = 3). Zrozumienie jednostek przepustowości jest niezbędne do szacowania kosztów i diagnozowania błędów ograniczania przepustowości ProvisionedThroughputExceededException.
Tryb przepustowości provisioned
W trybie Provisioned Capacity określają Państwo dokładną liczbę RCU i WCU, które powinna obsługiwać tabela. DynamoDB rezerwuje tę przepustowość i pobiera za nią opłaty niezależnie od tego, czy jest wykorzystywana. Jeśli aplikacja przekroczy przydzieloną przepustowość, żądania są ograniczane i zwracają wyjątek ProvisionedThroughputExceededException.
Tryb provisioned jest idealny dla obciążeń o przewidywalnym, stabilnym ruchu. Koszt jednostkowy jest niższy niż w trybie On-Demand, a koszty można dodatkowo zmniejszyć, kupując DynamoDB Reserved Capacity (zobowiązania na 1 rok lub 3 lata z rabatem do 76%).
# 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=50Tryb przepustowości on-demand
W trybie On-Demand DynamoDB automatycznie skaluje się, aby obsłużyć dowolny poziom ruchu, bez konieczności planowania przepustowości. Opłaty są naliczane za każde żądanie: za faktycznie zużyte RRU (jednostki żądań odczytu) i WRU (jednostki żądań zapisu). Nie ma przepustowości provisioned do zarządzania ani ograniczania ruchu z powodu limitów przepustowości provisioned.
Tryb On-Demand jest idealny dla: nieprzewidywalnych obciążeń lub nagłych skoków ruchu, nowych tabel o nieznanym ruchu oraz środowisk programistycznych i testowych z rzadkim dostępem. Koszt pojedynczego żądania jest wyższy niż w trybie provisioned, dlatego w przypadku stabilnych obciążeń o dużej przepustowości tryb provisioned jest bardziej ekonomiczny.
# 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_REQUESTPrzełączanie między trybami przepustowości
Tabelę można w dowolnym momencie przełączać między trybem Provisioned i On-Demand za pomocą konsoli lub CLI. Tryb można jednak zmienić tylko raz na 24 godziny. Po przełączeniu na On-Demand tabela zachowuje wcześniejszą szczytową przepustowość provisioned jako początkowy poziom przepustowości, co chroni przed natychmiastowym ograniczaniem ruchu, jeśli jest on już duży.
Popularna strategia polega na używaniu trybu On-Demand podczas początkowego uruchamiania, gdy wzorce ruchu są nieznane, a następnie przełączeniu na tryb Provisioned z funkcją Auto Scaling, gdy ruch stanie się przewidywalny, co pozwala zmniejszyć koszty.
# Switch a table to on-demand billing mode
aws dynamodb update-table \
--table-name Products \
--billing-mode PAY_PER_REQUESTAuto Scaling DynamoDB w trybie provisioned
Funkcja Auto Scaling DynamoDB automatycznie dostosowuje wartości RCU i WCU provisioned do rzeczywistego ruchu. Należy określić docelowy procent wykorzystania (np. 70%) oraz zakres minimalnej i maksymalnej przepustowości. Zasada Application Auto Scaling monitoruje zużytą przepustowość tabeli i dostosowuje przepustowość provisioned, aby utrzymać docelowy poziom wykorzystania.
Auto Scaling reaguje na utrzymujące się zmiany ruchu, a zwiększenie przepustowości może zająć kilka minut. Funkcja ta nie radzi sobie dobrze z nagłymi skokami ruchu — w takich sytuacjach należy ręcznie wcześniej zwiększyć przepustowość albo użyć trybu On-Demand.
# 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 1000Przepustowość buforowa
DynamoDB zachowuje do 5 minut niewykorzystanej przepustowości provisioned jako przepustowość buforową. Gdy ruch w tabeli na krótko przekroczy przydzielony poziom, DynamoDB korzysta z puli buforowej, aby obsłużyć dodatkowe żądania bez ich ograniczania. Po wyczerpaniu puli buforowej kolejne żądania przekraczające limit są ograniczane.
Przepustowość buforowa jest krótkoterminowym zabezpieczeniem, a nie zamiennikiem prawidłowego planowania przepustowości. Należy monitorować metryki CloudWatch ConsumedReadCapacityUnits i ConsumedWriteCapacityUnits, aby wykryć, kiedy obciążenie stale zużywa przepustowość buforową, i odpowiednio dostosować przepustowość provisioned.
Ograniczanie przepustowości i obsługa błędów
Gdy przepustowość provisioned zostanie przekroczona (a bufor wyczerpany), DynamoDB zwraca wyjątek ProvisionedThroughputExceededException. Zestawy AWS SDK zawierają wbudowaną logikę ponawiania prób z wykładniczym zwiększaniem odstępów i losowym rozrzutem, która automatycznie ponawia ograniczone żądania.
Aby zdiagnozować ograniczanie przepustowości, należy sprawdzić metryki CloudWatch SystemErrors i ThrottledRequests. Jeśli ograniczane są konkretne klucze partycji, podczas gdy ogólne wykorzystanie tabeli pozostaje niskie, oznacza to problem gorącej partycji — należy przeprojektować klucz partycji, dodać klucz sortowania albo użyć dzielenia zapisów na fragmenty.
Szacowanie wymaganej przepustowości
Aby oszacować przepustowość dla trybu Provisioned:
- Obliczyć szczytową liczbę zapisów na sekundę × średni rozmiar elementu / 1 KB (zaokrąglając w górę) = wymagana liczba WCU
- Obliczyć szczytową liczbę odczytów na sekundę × średni rozmiar elementu / 4 KB (zaokrąglając w górę) = wymagana liczba RCU (dla odczytów silnie spójnych); w przypadku odczytów ostatecznie spójnych zmniejszyć wynik o połowę
- Dodać 20–30% zapasu powyżej wartości szczytowej, aby obsłużyć skoki ruchu, zanim zostanie zużyta przepustowość buforowa
Przykład: 1000 zapisów/s elementów o rozmiarze 2 KB = 2000 WCU. 5000 odczytów/s elementów o rozmiarze 8 KB (ostatecznie spójnych) = ceil(8/4) × 5000 / 2 = 5000 RCU.
Przepustowość zarezerwowana jako sposób na obniżenie kosztów
DynamoDB Reserved Capacity umożliwia zakup stałej liczby RCU i WCU na okres 1 roku lub 3 lat, z płatnością z góry i znacznym rabatem (do 76%) w porównaniu z cenami On-Demand. Zarezerwowana przepustowość obejmuje wszystkie tabele w trybie provisioned w danym Regionie i jest automatycznie uwzględniana w opłatach godzinowych.
Reserved Capacity dotyczy wyłącznie trybu Provisioned — nie można jej używać w trybie On-Demand. Jest to najlepsza opcja obniżenia kosztów w przypadku stabilnych, przewidywalnych obciążeń, które można wiarygodnie prognozować na okres 1–3 lat.
Porównanie trybów: przewodnik po decyzjach egzaminacyjnych
W przypadku pytań SAA-C03 dotyczących trybu przepustowości należy korzystać z poniższego przewodnika:
- On-Demand: nieprzewidywalny ruch, nowa aplikacja, rzadki dostęp, obciążenie z nagłymi skokami, potrzeba całkowitego wyeliminowania zarządzania przepustowością
- Provisioned: stały i przewidywalny ruch, nacisk na koszty, gotowość do zarządzania przepustowością, możliwość skorzystania ze zniżek Reserved Capacity
- Provisioned + Auto Scaling: przewidywalny poziom bazowy z pewną zmiennością, potrzeba automatycznego dostosowywania bez ręcznych zmian
Na egzaminie słowa kluczowe takie jak 'spiky', 'unpredictable' lub 'minimal operational overhead' wskazują na On-Demand, natomiast 'steady traffic' lub 'cost optimisation' wskazują na Provisioned.
Przepustowość adaptacyjna
Funkcja Adaptive Capacity DynamoDB automatycznie przekierowuje przepustowość z chłodnych partycji do gorących partycji w czasie rzeczywistym. Jeśli jeden klucz partycji otrzymuje więcej ruchu niż przydzielony mu udział, przepustowość adaptacyjna pobiera przepustowość z niedostatecznie wykorzystywanych partycji, aby obsłużyć gorącą partycję — pod warunkiem że całkowita przepustowość tabeli nie zostanie przekroczona.
Przepustowość adaptacyjna jest zawsze włączona i nie wymaga konfiguracji. Ogranicza problemy z throttlingiem gorących partycji przy umiarkowanie nierównomiernych wzorcach dostępu. W przypadku obciążeń o silnie nierównomiernym rozkładzie (np. gdy jeden klucz partycji otrzymuje 90% ruchu) przepustowość adaptacyjna nie wystarczy — należy przeprojektować klucz partycji albo użyć dzielenia zapisów na fragmenty.
Szybkie sprawdzenie
Sprawdź swoją wiedzę na temat zagadnień AWS Solutions Architect (SAA-C03) omówionych w tej lekcji.
Podsumowanie lekcji
W tej lekcji poznali Państwo następujące zagadnienia: tryb Provisioned ustawia stałe wartości RCU/WCU dla przewidywalnych obciążeń przy niższym koszcie, tryb On-Demand skaluje się automatycznie w przypadku nieprzewidywalnego ruchu, ale ma wyższą cenę za żądanie, a Auto Scaling dostosowuje przepustowość provisioned na podstawie docelowych wartości procentowego wykorzystania. W następnej części omówimy indeksy Global Secondary Indexes i Local Secondary Indexes służące do realizacji alternatywnych wzorców zapytań.
Często zadawane pytania
Czy lekcja „Pojemność aprowizowana a tryb On-Demand” jest bezpłatna?
Tak — pełny tekst „Pojemność aprowizowana a tryb On-Demand” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cloud & IT Cert Prep, przejdź na CoddyKit PRO. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.
Co nauczysz się w „Pojemność aprowizowana a tryb On-Demand”?
Wybiorą między aprowizowaną przepustowością z automatycznym skalowaniem a trybem On-Demand na podstawie przewidywalności ruchu i kosztów. Ćwiczysz Cloud & IT Cert Prep z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Cloud & IT Cert Prep?
Nie wymagamy żadnego doświadczenia. Cloud & IT Cert Prep w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Pojemność aprowizowana a tryb On-Demand”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Cloud & IT Cert Prep?
Tak. Każda lekcja Cloud & IT Cert Prep zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Tabele, elementy i klucze główne
- Pojemność aprowizowana a tryb On-Demand
- Globalne i lokalne indeksy pomocnicze
- Strumienie DynamoDB i tabele globalne