Azure Cosmos DB rugalmas skálázása Apache Cassandra-fiókhoz

A KÖVETKEZŐKRE VONATKOZIK: Cassandra

Az Apache Cassandra-hoz készült Azure Cosmos DB rugalmas jellegének megismerésére számos lehetőség áll rendelkezésre. Az Azure Cosmos DB hatékony skálázási módjának megértéséhez fontos tisztában lenni azzal, hogyan építheti ki a megfelelő mennyiségű kérelemegységet (RU/s) a rendszer teljesítményigényeinek figyelembe vételével. A kérelemegységekkel kapcsolatos további információkért tekintse meg a kérelemegységeket ismertető cikket.

A Cassandra API-hoz lekérheti az egyes lekérdezések kérelemegység-díját a .NET- és Java SDK-k használatával. Ez hasznos annak meghatározásához, hogy mennyi RU/s-t kell kiépítenie a szolgáltatásban.

Az adatbázis-műveletek kérelemegységeket használnak fel

Sebességkorlátozás kezelése (429-hibák)

Az Azure Cosmos DB korlátozott (429) hibát ad vissza, ha az ügyfelek több erőforrást (RU/s) használnak, mint amennyit kiépített. Az Azure Cosmos DB Cassandra API-ja ezeket a kivételeket a Cassandra natív protokollján túlterhelt hibákra fordítja.

Ha a rendszer nem érzékeny a késésre, elegendő lehet újrapróbálkozásokkal kezelni az átviteli sebesség korlátozását. A sebességkorlátozás transzparens kezeléséhez tekintse meg az Apache Cassandra Java-illesztőprogramok 3 . és 4. verziójának Java-kódmintáit. Ezek a minták az alapértelmezett Cassandra újrapróbálkozési szabályzat egyéni verzióját implementálják Javában. A Spark-bővítményt a sebességkorlátozás kezelésére is használhatja. A Spark használatakor kövesse a Spark-összekötő átviteli sebességének konfigurálásával kapcsolatos útmutatónkat.

Skálázás kezelése

Ha minimalizálnia kell a késést, a Cassandra API-ban számos lehetőség közül választhat a skálázás és az átviteli sebesség (RU-k) kezelésére:

Az alábbi szakaszok az egyes megközelítések előnyeit és hátrányait ismertetik. Ezután eldöntheti, hogy melyik a legjobb stratégia a rendszer skálázási igényeinek, a teljes költségnek és a megoldás hatékonyságának egyensúlyba hozásához.

Az Azure Portal használata

Az Azure Cosmos DB for Apache Cassandra-fiók erőforrásait a Azure Portal használatával skálázhatja. További információ: Átviteli sebesség kiosztása tárolókon és adatbázisokon. Ez a cikk az átviteli sebesség adatbázis- vagy tárolószinten történő beállításának relatív előnyeit ismerteti a Azure Portal. Az ezekben a cikkekben említett "database" és "container" kifejezések a Cassandra API-hoz tartozó "keyspace" és "table" kifejezésre vannak leképezetten.

Ennek a módszernek az az előnye, hogy ez egy egyszerű kulcsrakész módszer az adatbázis átviteli kapacitásának kezelésére. A hátránya azonban az, hogy a skálázási megközelítés sok esetben megköveteli, hogy az automatizálás bizonyos szintjei költséghatékonyak és magas szintűek legyenek. A következő szakaszok a releváns forgatókönyveket és módszereket ismertetik.

A vezérlősík használata

Az Azure Cosmos DB Cassandra-hoz készült API-ja képes programozott módon módosítani az átviteli sebességet a különböző vezérlősík-funkciókkal. Útmutatásért és mintákért tekintse meg az Azure Resource Manager, a PowerShell és az Azure CLI cikkeit.

Ennek a módszernek az az előnye, hogy automatizálhatja az erőforrások fel- vagy leskálázását egy időzítő alapján, amely figyelembe veszi a csúcstevékenységet vagy az alacsony aktivitási időszakokat. Tekintse meg az itt található mintát, amelyből megtudhatja, hogyan valósíthatja meg ezt a Azure Functions és a PowerShell használatával.

Ennek a megközelítésnek az lehet az egyik hátránya, hogy nem tud valós időben reagálni a kiszámíthatatlanul változó skálázási igényekre. Ehelyett előfordulhat, hogy az alkalmazáskörnyezetet a rendszerben, az ügyfél/SDK szintjén vagy az automatikus skálázást kell használnia.

CQL-lekérdezések használata adott SDK-val

A rendszer dinamikusan skálázható kóddal az adott adatbázis vagy tároló CQL ALTER parancsainak végrehajtásával.

Ennek a megközelítésnek az az előnye, hogy lehetővé teszi, hogy dinamikusan és az alkalmazásnak megfelelő egyéni módon reagáljon a skálázási igényekre. Ezzel a megközelítéssel továbbra is kihasználhatja a standard RU/s díjakat és díjakat. Ha a rendszer skálázási igényei többnyire kiszámíthatóak (körülbelül 70%, vagy több), az SDK és a CQL használata költséghatékonyabb módszer lehet az automatikus skálázáshoz, mint az automatikus skálázás. Ennek a megközelítésnek a hátránya, hogy az újrapróbálkozások megvalósítása meglehetősen bonyolult lehet, míg a sebességkorlátozás növelheti a késést.

Automatikus skálázás kiosztott átviteli sebességének használata

Az átviteli sebesség kiosztásának szabványos (manuális) vagy programozott módja mellett az Azure Cosmos DB-tárolókat is konfigurálhatja automatikusan skálázott kiosztott átviteli sebességben. Az automatikus skálázás az SLA-k veszélyeztetése nélkül automatikusan és azonnal a használati igényeknek megfelelően méretezhető a megadott RU-tartományokon belül. További információ: Azure Cosmos DB-tárolók és -adatbázisok létrehozása automatikus skálázásban .

Ennek a megközelítésnek az az előnye, hogy ez a legegyszerűbb módja a skálázási igények kezelésének a rendszerben. Nem alkalmazza a sebességkorlátozást a konfigurált RU-tartományokon belül. A hátrány az, hogy ha a rendszer skálázási igényei kiszámíthatók, az automatikus skálázás kevésbé költséghatékony módja lehet a skálázási igények kezelésének, mint a fent említett, a megfelelő vezérlősík vagy SDK szintű megközelítések használata.

Ha a CQL használatával szeretné beállítani vagy módosítani a maximális átviteli sebességet (RU-kat) az automatikus skálázáshoz, használja a következőt (ennek megfelelően cserélje le a kulcsteret/táblanevet):

# 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;

Következő lépések