Elastické škálování účtu Cosmos DB rozhraní API Cassandra Azure

PLATÍ pro: rozhraní API Cassandra

Elastickou povahu rozhraní API služby Azure Cosmos DB pro Cassandra můžete prozkoumat různými možnostmi. Abyste pochopili, jak efektivně škálovat ve službě Azure Cosmos DB, je důležité pochopit, jak zřídit správné množství jednotek žádostí (RU/s), aby se zohlednil výkon ve vašem systému. Další informace o jednotkách žádostí najdete v článku o jednotkách žádostí.

Pro rozhraní API Cassandra můžete načíst poplatek za jednotku žádosti pro jednotlivé dotazy pomocí .NET a java SDK. To je užitečné při určování množství RU/s, které budete ve službě muset zřídit.

Databázové operace spotřebovávají jednotky žádostí

Zpracování omezování rychlosti (chyby 429)

Azure Cosmos DB vrátí chyby omezené rychlostí (429), pokud klienti spotřebovávají více prostředků (RU/s), než je množství, které jste zř nakonzuli. Aplikace rozhraní API Cassandra Azure Cosmos DB překládá tyto výjimky na přetížené chyby v nativním protokolu Cassandra.

Pokud váš systém není citlivý na latenci, může být dostačující pro zpracování omezování rychlosti propustnosti pomocí opakování. Informace o transparentním zpracování transparentního omezování rychlosti najdete v ukázkách kódu Java pro verze 3 a 4 ovladačů Java pro Apache Cassandra. Tyto ukázky implementují vlastní verzi výchozí zásady opakování Cassandra v Javě. Rozšíření Spark můžete použít také ke zpracování omezování rychlosti. Pokud používáte Spark, ujistěte se, že dodržujete naše pokyny k optimalizaci konfigurace propustnosti konektoru Spark.

Správa škálování

Pokud potřebujete minimalizovat latenci, existuje spektrum možností pro správu škálování a zřizování propustnosti (RU) v rozhraní API Cassandra:

Následující části popisují výhody a nevýhody jednotlivých přístupů. Pak se můžete rozhodnout pro nejlepší strategii pro vyvážení potřeb škálování vašeho systému, celkových nákladů a potřeb efektivity pro vaše řešení.

Použití Azure Portal

Prostředky ve službě Azure Cosmos DB rozhraní API Cassandra můžete škálovat pomocí Azure Portal. Další informace najdete v článku o zřízení propustnosti pro kontejnery a databáze. Tento článek vysvětluje relativní výhody nastavení propustnosti na úrovni databáze nebo kontejneru v Azure Portal. Termíny "database" a "container" zmíněné v těchto článcích se mapovat na "keyspace" a "table" pro rozhraní API Cassandra.

Výhodou této metody je, že se jedná o jednoduchý způsob správy kapacity propustnosti v databázi na klíč. Nevýhodou ale je, že v mnoha případech může váš přístup ke škálování vyžadovat, aby určité úrovně automatizace byly nákladově efektivní i vysoce efektivní. V dalších částech jsou vysvětlené relevantní scénáře a metody.

Použití řídicí roviny

Rozhraní API služby Azure Cosmos DB pro Cassandra poskytuje možnost programově upravit propustnost pomocí různých funkcí řídicí roviny. Pokyny a ukázky najdete v článcích Azure Resource Manager, PowerShella Azure CLI.

Výhodou této metody je, že můžete automatizovat škálování prostředků nahoru nebo dolů na základě časovače, aby se zohlednila aktivita ve špičce nebo období nízké aktivity. Podívejte se na naši ukázku, jak toho dosáhnout pomocí Azure Functions a PowerShellu.

Nevýhodou tohoto přístupu může být, že v reálném čase nemůžete reagovat na nepředvídatelné měnící se potřeby škálování. Místo toho možná budete muset využít kontext aplikace ve vašem systému, na úrovni klienta nebo sady SDK nebo pomocí automatického škálování.

Použití dotazů CQL s konkrétní sadou SDK

Systém můžete dynamicky škálovat pomocí kódu spuštěním příkazů CQL ALTER pro danou databázi nebo kontejner.

Výhodou tohoto přístupu je, že umožňuje dynamicky a vlastním způsobem, který vyhovuje vaší aplikaci, reagovat na potřeby škálování. S tímto přístupem můžete stále využívat standardní poplatky za RU/s a sazby. Pokud jsou potřeby škálování vašeho systému většinou předvídatelné (přibližně 70 % nebo více), použití sady SDK s jazykem CQL může být cenově výhodnější metodou automatického škálování než použití automatického škálování. Nevýhodou tohoto přístupu je, že implementace opakování může být poměrně složitá, zatímco omezování rychlosti může zvýšit latenci.

Použití zřízené propustnosti s automatickým škálováním

Kromě standardního (ručního) nebo programového způsobu zřizování propustnosti můžete také nakonfigurovat kontejnery Azure Cosmos v automatickém škálování zřízené propustnosti. Automatické škálování se automaticky a okamžitě škáluje podle potřeb vaší spotřeby v rámci zadaných rozsahů RU, aniž by to bylo ohroženo sla. Další informace najdete v článku Vytvoření kontejnerů azure Cosmos a databází v automatickém škálování.

Výhodou tohoto přístupu je, že se jedná o nejjednodušší způsob, jak spravovat potřeby škálování ve vašem systému. V rámci nakonfigurovaných rozsahů RU se nepoužije omezování rychlosti. Nevýhodou je, že pokud jsou potřeby škálování ve vašem systému předvídatelné, může být automatické škálování méně nákladově efektivní způsob zpracování vašich potřeb škálování než použití roviny řízení na míru nebo výše uvedených přístupů na úrovni sady SDK.

Pokud chcete nastavit nebo změnit maximální propustnost (RU) pro automatické škálování pomocí jazyka CQL, použijte následující příkaz (odpovídajícím způsobem nahraďte název prostoru klíčů nebo tabulky):

# to set max throughput (RUs) for autoscale at keyspace level:
create keyspace <keyspace name> WITH cosmosdb_autoscale_max_throughput=5000;

# to alter max throughput (RUs) for autoscale at keyspace level:
alter keyspace <keyspace name> WITH cosmosdb_autoscale_max_throughput=4000;

# to set max throughput (RUs) for autoscale at table level:
create table <keyspace name>.<table name> (pk int PRIMARY KEY, ck int) WITH cosmosdb_autoscale_max_throughput=5000;

# to alter max throughput (RUs) for autoscale at table level:
alter table <keyspace name>.<table name> WITH cosmosdb_autoscale_max_throughput=4000;

Další kroky