Azure Cosmos DB rugalmas méretezése 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ásá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éhez. A kérelemegységekről további információt a kérelemegységekről szóló cikkben talál.
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.
Sebességkorlátozás kezelése (429 hiba)
Az Azure Cosmos DB korlátozott (429) hibát ad vissza, ha az ügyfelek több erőforrást (RU/s) használnak fel, mint amennyit kiosztott. Az Azure Cosmos DB Cassandra API-ja ezeket a kivételeket a Cassandra natív protokoll túlterhelt hibáira fordítja.
Ha a rendszer nem érzékeny a késésre, elegendő lehet újrapróbálkozással kezelni az átviteli sebesség korlátozását. Az Apache Cassandra Java-illesztőprogramok 3- és 4-es verziójának Java-kódmintáit a sebességkorlátozó transzparens kezelésével kapcsolatban tekintse meg. Ezek a minták az alapértelmezett Cassandra újrapróbálkozési szabályzat egyéni verzióját implementálják a Javában. A Spark-bővítmény használatával is kezelheti a sebességkorlátozást. A Spark használatakor kövesse a Spark-összekötő átviteli sebességének optimalizálására vonatkozó útmutatást.
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:
- Manuálisan az Azure Portal használatával
- Programozott módon a vezérlősík funkcióinak használatával
- Programozott módon egy adott SDK-val rendelkező CQL-parancsok használatával
- Dinamikusan az automatikus skálázás használatával
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 megoldás általános költségeinek é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 az Azure Portal használatával skálázhatja. További információkért tekintse meg a tárolók és adatbázisok átviteli sebességének kiépítéséről szóló cikket. 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 az Azure Portalon. Az ezekben a cikkekben említett "adatbázis" és "tároló" kifejezések "keyspace" és "table" kifejezéseket képeznek le a Cassandra API-hoz.
Ennek a módszernek az az előnye, hogy ez egy egyszerű kulcsrakész módszer az átviteli sebesség kapacitásának kezelésére az adatbázisban. 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 teljesítményű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ók használatával. Ú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 tevékenységi időszakokat. Tekintse meg itt a mintát, amelyből megtudhatja, hogyan valósíthatja meg ezt az Azure Functions és a PowerShell használatával.
Ezzel a megközelítéssel hátránya lehet, 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 kell használnia 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 méretezé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ásra, mint az automatikus skálázásra. Ennek a megközelítésnek a hátránya, hogy az újrapróbálkozási módszerek 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
A szabványos (manuális) vagy programozott átviteli sebesség kiépítési 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 skálázható a megadott RU-tartományokon belüli használati igényekre. További információ: Azure Cosmos DB-tárolók és -adatbázisok létrehozása automatikus méretezési cikkben.
Ennek a megközelítésnek az az előnye, hogy ez a legegyszerűbb módszer a skálázási igények kezelésére a rendszerben. Nem alkalmazza a sebességkorlátozást a konfigurált RU-tartományokon belül. A hátránya 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, beépített vezérlősík vagy SDK-szintű megközelítések használata.
Az automatikus skálázás maximális átviteli sebességének (RU-k) A CQL használatával történő beállításához vagy módosításához 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
- Első lépések a Cassandra-fiókhoz, -adatbázishoz és -táblához készült API-k Java-alkalmazással történő létrehozásával