Udostępnij za pośrednictwem


Tworzenie kontenerów i baz danych w usłudze Azure Cosmos DB z przepustowością autoskalowalną

Dotyczy: NoSQL MongoDB Kasandra Gremlin Stół

W usłudze Azure Cosmos DB można skonfigurować ręczną (standardową) lub autoskalowaną aprowizowaną przepływność dla baz danych i kontenerów. Automatyczne skalowanie aprowizowanej przepływności w usłudze Azure Cosmos DB umożliwia automatyczne i natychmiastowe skalowanie przepływności (RU/s) bazy danych lub kontenera.

Przepływność aprowizowana z funkcją autoskalowania jest odpowiednia dla obciążeń o znaczeniu krytycznym, które mają zmienne lub nieprzewidywalne wzorce ruchu i wymagają SLA dotyczących wysokiej wydajności i skalowalności. Skalowanie automatyczne domyślnie skaluje obciążenia na podstawie najbardziej aktywnego regionu i partycji. W przypadku obciążeń, które mają różne wzorce obciążeń w różnych regionach i partycjach, takie skalowanie może spowodować niepotrzebne rozszerzenie w górę. Skalowanie dynamiczne lub automatyczne skalowanie dynamiczne to ulepszenie aprowizowania automatycznego skalowania w całym systemie, które ułatwia niezależne skalowanie takich obciążeń niezwiązanych na podstawie użycia, na poziomie poszczególnych regionów i na poziomie partycji. Dynamiczne skalowanie pozwala oszczędzać na kosztach w przypadku częstego występowania gorących partycji i/lub posiadania wielu regionów.

Zalety automatycznego skalowania

Bazy danych i kontenery usługi Azure Cosmos DB, które są skonfigurowane z przepływnością zapewnioną autoskalowaniem, mają następujące korzyści:

  • Proste: Autoskalowanie eliminuje złożoność zarządzania jednostkami RU/s, usuwając konieczność używania niestandardowego skryptu lub ręcznego skalowania wydajności.

  • Skalowalne: bazy danych i kontenery automatycznie skalują aprowizowaną przepływność zgodnie z potrzebami. Nie ma żadnych zakłóceń w połączeniach klienckich, aplikacjach ani w SLA usługi Azure Cosmos DB.

  • Optymalne kosztowo: autoskalowanie pomaga zoptymalizować użycie jednostek RU/s i kosztów przez skalowanie w dół, gdy zasoby nie są używane. Płacisz tylko za zasoby, których potrzebują obciążenia w rozliczeniu godzinowym. Spośród wszystkich godzin w miesiącu, jeśli ustawisz maksymalną wartość RU/s (Tmax) dla autoskalowania i używasz pełnej wartości Tmax przez 66% godzin lub mniej, możesz zaoszczędzić dzięki autoskalowaniu. Oprócz skalowania dynamicznego dodanie regionu pomocniczego w celu zapewnienia wysokiej dostępności jest bardziej ekonomiczne, ponieważ każdy region i partycje są skalowane niezależnie na podstawie rzeczywistego użycia. Aby dowiedzieć się więcej, zobacz artykuł „Jak wybrać między standardową (ręczną) a zaplanowaną przepływnością autoskalowania”.

  • Wysoka dostępność: bazy danych i kontenery korzystające z automatycznego skalowania używają tego samego globalnie rozproszonego, odpornego na uszkodzenia, wysoce dostępnego zaplecza usługi Azure Cosmos DB w celu zapewnienia trwałości danych i wysokiej dostępności.

Zastosowania automatycznego skalowania

Przypadki użycia autoskalowania obejmują:

  • Zmienne lub nieprzewidywalne obciążenia: jeśli obciążenia mają zmienne lub nieprzewidywalne skoki użycia, autoskalowanie pomaga automatycznie skalować w górę i w dół na podstawie użycia. Przykłady obejmują witryny internetowe handlu detalicznego, które mają różne wzorce ruchu w zależności od sezonowości; Obciążenia IOT, które mają skoki w różnych porach dnia; aplikacje biznesowe, które widzą szczytowe użycie kilka razy w miesiącu lub roku i nie tylko. Dzięki automatycznemu skalowaniu nie trzeba już ręcznie zapewniać maksymalnej lub średniej wydajności.

  • Nowe aplikacje: jeśli tworzysz nową aplikację i nie masz pewności co do potrzebnej przepływności (RU/s), autoskalowanie ułatwia rozpoczęcie pracy. Możesz zacząć od poziomu autoskalowania 100–1000 RU/s, monitorować użycie i z czasem określić odpowiednią liczbę RU/s.

  • Rzadko używane aplikacje: jeśli masz aplikację, która jest używana tylko przez kilka godzin kilka razy dziennie, tydzień lub miesiąc — na przykład w witrynie internetowej/blogu o niskim woluminie. Automatyczne skalowanie dostosowuje pojemność do obsługi szczytowego użycia i zmniejsza ją, gdy zapotrzebowanie maleje.

  • Obciążenia programistyczne i testowe: jeśli ty lub twój zespół korzystasz z baz danych i kontenerów usługi Azure Cosmos DB w godzinach pracy, ale nie potrzebujesz ich w nocy lub weekendach, autoskalowanie pomaga zaoszczędzić koszty, skalując w dół do minimum, gdy nie są używane.

  • Zaplanowane obciążenia produkcyjne/zapytania: jeśli masz serię zaplanowanych żądań, operacji lub zapytań, które mają być uruchamiane w okresach bezczynności, możesz to łatwo wykonać za pomocą skalowania automatycznego. Gdy musisz uruchomić obciążenie, przepływność automatycznie skaluje się do wymaganej wartości i skaluje w dół.

Tworzenie niestandardowego rozwiązania tych problemów nie tylko wymaga ogromnego czasu, ale także wprowadza złożoność konfiguracji lub kodu aplikacji. Autoskalowanie umożliwia korzystanie z powyższych scenariuszy i eliminuje potrzebę niestandardowego lub ręcznego skalowania pojemności.

Przypadki użycia skalowania dynamicznego

Przypadki użycia dynamicznego skalowania obejmują:

  • Obciążenia bazy danych, które mają duże natężenie ruchu w regionie podstawowym i regionie pomocniczym na potrzeby odzyskiwania po awarii.
    • Dzięki dynamicznej skalowaniu osiągnięcie wysokiej dostępności w wielu regionach jest bardziej ekonomiczne. Region pomocniczy niezależnie i automatycznie pomniejsza się, gdy jest bezczynny. Region pomocniczy jest również automatycznie zwiększany, gdy staje się aktywny oraz podczas obsługi ruchu związanego z replikacją zapisu z regionu podstawowego.
  • Obciążenia bazy danych w wielu regionach.
    • Obciążenia te często obserwują nierównomierny rozkład żądań w różnych regionach z powodu wzrostu i spadku ruchu naturalnego przez cały dzień. Na przykład baza danych może być aktywna w godzinach pracy w globalnie rozproszonych strefach czasowych.

Jak działa przydzielona przepustowość w autoskalowaniu

Podczas konfigurowania kontenerów i baz danych za pomocą autoskalowania należy określić maksymalną wymaganą przepływność Tmax . Usługa Azure Cosmos DB skaluje przepływność T w taki sposób, jak 0.1*Tmax <= T <= Tmax. Jeśli na przykład ustawisz maksymalną przepływność na 20 000 RU/s, przepływność będzie skalowana między 2000 a 20 000 RU/s. Ponieważ skalowanie jest automatyczne i natychmiastowe, w dowolnym momencie można bez opóźnień wykorzystać do przydzielonych zasobów Tmax.

Za każdą godzinę naliczane są opłaty za najwyższą przepustowość T do której system został skalowany w ciągu tej godziny. Po włączeniu dynamicznego skalowania skalowanie jest oparte na użyciu jednostek RU/s w każdej partycji fizycznej i regionie. Ponieważ każda partycja i region są skalowane niezależnie, może to prowadzić do obniżenia kosztów niejednorodnych obciążeń, unikając niepotrzebnego skalowania.

Punkt początkowy maksymalnej przepływności autoskalowania Tmax zaczyna się od 1000 RU/s i skaluje się w zakresie od 100 do 1000 RU/s. Można ustawić Tmax w przyrostach co 1000 RU/s i zmienić wartość w dowolnym momencie.

Jeśli na przykład mamy kolekcję z 1000 RU/s i 2 partycjami, każda partycja może przejść do 500 RU/s. W przypadku jednej godziny działania użycie będzie wyglądać następująco:

Rejon Partycja Produktywność Wykorzystanie Uwagi
Napisz P1 <= 500 RU/s 100% 500 RU/s składających się z 50 RU/s używanych do operacji zapisu i 450 RU/s na potrzeby operacji odczytu.
Napisz P2 <= 200 RU/s 40% 200 RU/s, które obejmują wszystkie operacje odczytu.
Przeczytaj P1 <= 150 RU/s 30% 150 RU/s składających się z 50 RU/s używanych do zapisu replikowanego z regionu zapisu. 100 RU/s są używane do operacji odczytu w tym regionie.
Przeczytaj P2 <= 50 RU/s 10%

Bez dynamicznego skalowania wszystkie partycje są skalowane równomiernie na podstawie najgorętszej partycji. W tym przykładzie, ponieważ najgorętsza partycja miała 100% wykorzystania, wszystkie partycje w regionach zapisu i odczytu są skalowane do 1000 RU/s, co powoduje, że łączna liczba RU/s jest skalowana do 2000 RU/s.

W przypadku skalowania dynamicznego, ponieważ każda partycja i przepustowość regionu są skalowane niezależnie, łączna liczba jednostek RU/s jest skalowana do 900 RU/s, co lepiej odzwierciedla rzeczywisty wzorzec ruchu i obniża koszty.

Włączanie automatycznego skalowania w istniejących zasobach

Użyj portalu Azure, interfejsu wiersza polecenia lub programu PowerShell, aby włączyć skalowanie automatyczne w istniejącej bazie danych lub kontenerze. W dowolnym momencie możesz przełączać się między aprowizowaną przepływnością autoskalowania i standardową (ręczną). Aby uzyskać więcej informacji, zapoznaj się z tą dokumentacją , aby uzyskać więcej informacji.

Limity przepustowości i przestrzeni magazynowej dla automatycznego skalowania

W przypadku dowolnej wartości Tmaxbaza danych lub kontener może przechowywać łącznie 0.1 * Tmax GBwartość . Po osiągnięciu tej ilości magazynu maksymalna liczba jednostek RU/s zostanie automatycznie zwiększona na podstawie nowej wartości magazynu bez wpływu na aplikację.

Jeśli na przykład zaczniesz od maksymalnej wartości RU/s wynoszącej 50 000 RU/s (skaluje się między 5000 a 50 000 RU/s), możesz przechowywać maksymalnie 5000 GB danych. Jeśli przekroczysz 5000 GB — na przykład magazyn wynosi teraz 6000 GB, nowa maksymalna liczba JEDNOSTEK RU/s stanie się 60 000 RU/s (skaluje się między 6000 a 60 000 RU/s).

Jeśli używasz przepływności na poziomie bazy danych z autoskalowaniem, możesz mieć 25 pierwszych kontenerów współużytkujących maksymalną wartość 1000 RU/s autoskalowania (skalowanie między 100– 1000 RU/s), o ile nie przekraczasz 100 GB magazynu. Aby uzyskać więcej informacji, zapoznaj się z tą dokumentacją.

Włączanie dynamicznego skalowania

Dynamiczne skalowanie jest domyślnie włączone dla wszystkich kont usługi Azure Cosmos DB utworzonych po 25 września 2024 r. Klienci, którzy chcą włączyć tę funkcję dla starszych kont, mogą to zrobić programowo za pośrednictwem Azure PowerShell, interfejsu wiersza polecenia, interfejsu API REST lub w okienku funkcji portalu Azure, jak pokazano poniżej.

  1. Przejdź do konta usługi Azure Cosmos DB w witrynie Azure Portal.

  2. Przejdź do strony Funkcje .

  3. Znajdź i włącz funkcję skalowania dynamicznego (na region i skalowanie automatyczne na partycje).

    Zrzut ekranu przedstawiający funkcję skalowania dynamicznego (na region i skalowanie automatyczne na partycje) w witrynie Azure Portal.

    Ważne

    Ta funkcja jest włączona na poziomie konta, więc wszystkie kontenery z autoskalowaniem i bazy danych z autoskalowanym współdzielonym przepływem w ramach konta będą miały tę funkcjonalność automatycznie zastosowaną. Włączenie tej funkcji nie ma wpływu na zasoby na koncie korzystającym z przepływności ręcznej. Aby móc korzystać ze skalowania dynamicznego, należy zmienić zasoby ręczne na skalowanie automatyczne. Włączenie tej funkcji nie powoduje przestojów ani nie wpływa na wydajność. Ta funkcja nie ma zastosowania w przypadku kont bezserwerowych. Ta funkcja jest obsługiwana we wszystkich chmurach.

Monitorowanie metryk

Do monitorowania skalowania automatycznego i dynamicznego można użyć następujących metryk:

Nazwa metryki Definicja Użycie metryk
Aprowizowana przepływność Przedstawia zagregowaną najwyższą liczbę jednostek RU/s skalowaną do całej godziny i reprezentuje łączną liczbę jednostek RU/s skalowaną do godziny. Możesz użyć Provisioned Throughput metryki, aby zobaczyć jednostki RU/s, za które są naliczane opłaty za każdą godzinę. W przypadku automatycznego skalowania opłaty są naliczane na podstawie najbardziej aktywnej partycji dla każdej godziny, a to samo jest stosowane do wszystkich partycji i regionów. W przypadku dynamicznego skalowania automatycznego opłaty są naliczane za zsumowane najwyższe wartości RU/s w każdej godzinie, osobno dla poziomu partycji i poziomu regionu.
Znormalizowane zużycie RU Ta metryka reprezentuje stosunek zużytych jednostek RU/s do przydzielonych jednostek RU/s dla każdej partycji i poziomu regionu. Użyj tej metryki, aby określić, czy maksymalna przepustowość autoskalowania jest zbyt mała lub zbyt duża.

Jeśli wartość metryki jest spójnie 100%, a aplikacja widzi ograniczanie szybkości (kod błędu 429), możesz potrzebować więcej jednostek RU/s. Natomiast jeśli ta wartość metryki jest niska i nie ma ograniczenia szybkości, może istnieć miejsce na optymalizację i skalowanie jednostek RU/s w dół. Dowiedz się, jak interpretować i debugować błędy ograniczania szybkości kodu 429.

Normalized RU Consumption Metryka odzwierciedla RU/s zużywane w regionie pomocniczym z powodu ruchu replikacji zapisu z podstawowego, oraz każdego ruchu odczytu w regionie pomocniczym.
Autoskalowane jednostki RU (jeśli RU oznacza coś konkretnego, można podać pełną nazwę w nawiasie) Pokazuje dynamicznie skalowaną aprowizowaną przepływność na każdym poziomie partycji i regionu tylko dla kont z obsługą automatycznego skalowania dynamicznego. Użyj tej metryki, aby zobaczyć, jak partycje w poszczególnych regionach są skalowane niezależnie na podstawie ich użycia.

Użyj metryk - Autoscaled RU usługi Azure Monitor, aby przeanalizować sposób stosowania nowego skalowania automatycznego między partycjami i regionami. Przefiltruj według wybranego konta bazy danych i kontenera, następnie przefiltruj lub podziel przez metrykę Identyfikator partycji fizycznej. Ta metryka przedstawia wszystkie partycje w ich różnych regionach.

Ważne

Zaleca się używanie natywnej funkcji dynamicznego skalowania usługi Azure Cosmos DB do zarządzania pojemnością. Jednak w razie potrzeby metryka Znormalizowane zużycie jednostek RU w Azure Monitor może służyć do podejmowania decyzji dotyczących skalowania programowego. Inne podejścia, takie jak użycie wywołania ReadThroughputAsync() w pakietach SDK usługi Azure Cosmos DB w celu uzyskania wartości aprovisionowanego przepustowości, lub użycie elementu ProvisionedThroughput w usłudze Azure Monitor, nie są zalecane i doprowadzą do niedokładnych wyników. Te metryki reprezentują rozliczaną przepływność z opóźnieniem i nie powinny być używane do podejmowania decyzji dotyczących skalowania.

Porównanie — kontenery skonfigurowane przy użyciu przepływności ręcznej oraz automatycznego skalowania

Aby uzyskać więcej informacji, zobacz tę dokumentację dotyczącą wybierania między standardową (ręczną) i automatyczną przepływnością.

Kontenery ze standardową (manualną) przepustowością Kontenery z przepływnością autoskalowania
Aprowizowana przepływność (RU/s) Ręcznie przydzielono zasoby. Automatyczne i natychmiastowe skalowanie na podstawie wzorców użycia obciążenia.
Ograniczenie liczby żądań/operacji (429) Może się zdarzyć, jeśli użycie przekroczy aprowizowaną pojemność. Nie występuje, jeśli używasz jednostek RU/s w skonfigurowanym zakresie przepustowości autoskalowania.
Planowanie pojemności Musisz zaplanować pojemność i ustawić dokładną potrzebną przepływność. System automatycznie zajmuje się planowaniem pojemności i zarządzaniem pojemnością.
Cennik Płacisz za ręcznie aprowizowane RU/s na godzinę, korzystając ze standardowej (manualnej) stawki RU/s na godzinę. Płacisz za godzinę za najwyższą liczbę jednostek RU/s, do jakiej system skalował się w ciągu tej godziny.

W przypadku kont z pojedynczym regionem zapisu płacisz za jednostki RU/s używane co godzinę, korzystając z stawki ru/s skalowania automatycznego na godzinę.

W przypadku kont z wieloma regionami zapisu nie są naliczane dodatkowe opłaty za skalowanie automatyczne. Płacisz za przepływność używaną na zasadzie godzinowej, korzystając z tej samej wieloregionowej stawki RU/s zapisu na godzinę.

Najlepsze rozwiązanie dla typów obciążeń Przewidywalne i stabilne obciążenia Nieprzewidywalne i zmienne obciążenia

Migrowanie standardowej przydzielonej wydajności do automatycznego skalowania

Użytkownicy, którzy chcą migrować dużą liczbę zasobów ze standardowej aprowizowanej przepływności do automatycznego skalowania, mogą użyć skryptu interfejsu wiersza polecenia platformy Azure do migrowania każdego zasobu przepływności w subskrypcji platformy Azure do automatycznego skalowania.

Następne kroki