Elastické škálování účtu Služby Azure Cosmos DB pro Apache Cassandra
PLATÍ PRO: Cassandra
Existuje celá řada možností, jak prozkoumat elastickou povahu služby Azure Cosmos DB pro Apache Cassandra. 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) pro zohlednění požadavků na výkon ve vašem systému. Další informace o jednotkách žádostí najdete v článku jednotky žádostí.
Pro rozhraní API pro Cassandra můžete načíst poplatky za jednotku žádosti za jednotlivé dotazy pomocí sad .NET a sad Java SDK. To je užitečné při určování množství RU/s, které budete muset zřídit ve službě.
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ž množství, které jste zřídili. Rozhraní API pro Cassandra ve službě Azure Cosmos DB tyto výjimky překládá 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í ke zpracování omezování propustnosti pomocí opakovaných pokusů. Informace o transparentním zpracování omezování rychlosti najdete v ukázkách kódu Java pro Javu verze 3 a 4 ovladačů Apache Cassandra. Tyto ukázky implementují vlastní verzi výchozích zásad opakování Cassandra v Javě. Rozšíření Spark můžete použít také ke zpracování omezování rychlosti. Při použití Sparku se ujistěte, že postupujete podle našich pokynů k optimalizaci konfigurace propustnosti konektoru Spark.
Správa škálování
Pokud potřebujete minimalizovat latenci, existuje spektrum možností pro správu propustnosti škálování a zřizování (RU) v rozhraní API pro Cassandra:
- Ruční použití webu Azure Portal
- Programově pomocí funkcí řídicí roviny
- Programově pomocí příkazů CQL s konkrétní sadou SDK
- Dynamicky pomocí automatického škálování
Následující části popisují výhody a nevýhody jednotlivých přístupů. Pak se můžete rozhodnout, jaká je nejlepší strategie pro vyvážení potřeb škálování vašeho systému, celkových nákladů a potřeb efektivity vašeho řešení.
Použití portálu Azure Portal
Prostředky v účtu Azure Cosmos DB for Apache Cassandra můžete škálovat pomocí webu Azure Portal. Další informace najdete v článku o zřízení propustnosti kontejnerů a databází. Tento článek vysvětluje relativní výhody nastavení propustnosti na úrovni databáze nebo kontejneru na webu Azure Portal. Termíny "databáze" a "kontejner" uvedené v těchto článcích se mapují na "keyspace" a "table" pro rozhraní API pro Cassandra.
Výhodou této metody je, že jde o jednoduchý způsob správy kapacity propustnosti v databázi. Nevýhodou však 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 výkonné. Následující části popisují 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í našich různých funkcí roviny řízení. Pokyny a ukázky najdete v článcích o Azure Resource Manageru, PowerShellu a Azure CLI .
Výhodou této metody je, že můžete automatizovat vertikální navýšení nebo snížení kapacity prostředků na základě časovače, abyste mohli počítat s aktivitami ve špičce nebo obdobími 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 nemůžete reagovat na nepředvídatelné měnící se potřeby škálování v reálném čase. Místo toho možná budete muset využít kontext aplikace ve vašem systému, na úrovni klienta nebo sady SDK nebo použít automatické š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ů ALTER jazyka CQL pro danou databázi nebo kontejner.
Výhodou tohoto přístupu je, že umožňuje reagovat na potřeby škálování dynamicky a vlastním způsobem, který vyhovuje vaší aplikaci. S tímto přístupem můžete dál využívat standardní poplatky a sazby RU/s. Pokud jsou potřeby škálování vašeho systému většinou předvídatelné (přibližně 70 % nebo více), může být použití sady SDK s jazykem CQL nákladově efektivnější metodou automatického škálování než použití automatického škálování. Nevýhodou tohoto přístupu je, že může být poměrně složité implementovat opakování, zatímco omezování rychlosti může zvýšit latenci.
Použití zřízené propustnosti automatického škálování
Kromě standardního (ručního) nebo programového způsobu zřizování propustnosti můžete také nakonfigurovat kontejnery Azure Cosmos DB ve zřízené propustnosti automatického škálování. Automatické škálování se automaticky a okamžitě škáluje podle potřeb vaší spotřeby v rámci zadaných rozsahů RU bez ohrožení smluv SLA. Další informace najdete v článku o vytváření kontejnerů a databází Azure Cosmos DB v článku o automatickém škálování .
Výhodou tohoto přístupu je, že nejjednodušší způsob správy potřeb škálování ve vašem systému. V rámci nakonfigurovaných rozsahů RU se nepoužije omezení rychlosti. Nevýhodou je, že pokud jsou potřeby škálování ve vašem systému předvídatelné, může automatické škálování být méně nákladově efektivní způsob zpracování potřeb škálování než použití výše uvedených přístupů na úrovni ovládacího prvku nebo 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í (odpovídajícím způsobem nahraďte název keyspace 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
- Začínáme s vytvářením rozhraní API pro účet Cassandra, databázi a tabulku pomocí aplikace v Javě