Aracılığıyla paylaş


Apache Cassandra hesabı için Azure Cosmos DB'yi esnek bir şekilde ölçeklendirme

ŞUNLAR IÇIN GEÇERLIDIR: Cassandra

Apache Cassandra için Azure Cosmos DB'nin elastik doğasını keşfetmeye yönelik çeşitli seçenekler vardır. Azure Cosmos DB'de etkili bir şekilde ölçeklendirmeyi anlamak için sisteminizdeki performans taleplerini dikkate almak için doğru miktarda istek birimi (RU/sn) sağlamayı anlamak önemlidir. İstek birimleri hakkında daha fazla bilgi edinmek için istek birimleri makalesine bakın.

Cassandra API'sinde .NET ve Java SDK'larını kullanarak tek tek sorgular için İstek Birimi ücretini alabilirsiniz. Bu, hizmette sağlamanız gereken RU/sn miktarını belirlemede yararlıdır.

Veritabanı işlemleri İstek Birimlerini kullanır

Hız sınırlamasını işleme (429 hataları)

İstemciler sağladığınız miktardan daha fazla kaynak (RU/sn) kullanıyorsa Azure Cosmos DB hız sınırlı (429) hataları döndürür. Azure Cosmos DB'deki Cassandra API'si bu özel durumları Cassandra yerel protokolündeki aşırı yüklenmiş hatalara çevirir.

Sisteminiz gecikme süresine duyarlı değilse, yeniden denemeleri kullanarak aktarım hızı sınırlamasını işlemek yeterli olabilir. Hız sınırlamayı saydam bir şekilde işleme hakkında bilgi için bkz. Apache Cassandra Java sürücülerinin sürüm 3 ve sürüm 4 için Java kod örnekleri. Bu örnekler Java'da varsayılan Cassandra yeniden deneme ilkesinin özel bir sürümünü uygular. Hız sınırlamayı işlemek için Spark uzantısını da kullanabilirsiniz. Spark kullanırken Spark bağlayıcısı aktarım hızı yapılandırmasını iyileştirme yönergelerimizi izlediğimizden emin olun.

Ölçeklendirmeyi yönetme

Gecikme süresini en aza indirmeniz gerekiyorsa Cassandra için API'de ölçek ve sağlama aktarım hızını (RU) yönetmeye yönelik bir seçenek yelpazesi vardır:

Aşağıdaki bölümlerde her yaklaşımın avantajları ve dezavantajları açıklanmaktadır. Ardından sisteminizin ölçeklendirme gereksinimlerini, çözümünüz için genel maliyeti ve verimlilik gereksinimlerini dengelemek için en iyi stratejiyi seçebilirsiniz.

Azure portal’ı kullanma

Azure portalını kullanarak Apache Cassandra için Azure Cosmos DB hesabındaki kaynakları ölçeklendikleyebilirsiniz. Daha fazla bilgi edinmek için Kapsayıcılarda ve veritabanlarında aktarım hızı sağlama makalesine bakın. Bu makalede, Azure portalında veritabanı veya kapsayıcı düzeyinde aktarım hızı ayarlamanın göreli avantajları açıklanmaktadır. Bu makalelerde bahsedilen "veritabanı" ve "kapsayıcı" terimleri, Cassandra API'sinin sırasıyla "keyspace" ve "table" ile eşler.

Bu yöntemin avantajı, veritabanında aktarım hızı kapasitesini yönetmenin basit bir anahtar teslimi yolu olmasıdır. Ancak dezavantajı, çoğu durumda ölçeklendirme yaklaşımınızın belirli otomasyon düzeylerinin hem uygun maliyetli hem de yüksek performanslı olmasını gerektirebilir. Sonraki bölümlerde ilgili senaryolar ve yöntemler açıklanmaktadır.

Kontrol düzlemini kullanma

Azure Cosmos DB'nin Cassandra API'si, çeşitli denetim düzlemi özelliklerimizi kullanarak aktarım hızını program aracılığıyla ayarlama olanağı sağlar. Yönergeler ve örnekler için Azure Resource Manager, PowerShell ve Azure CLI makalelerine bakın.

Bu yöntemin avantajı, yoğun etkinliği veya düşük etkinlik dönemlerini hesaba eklemek için bir zamanlayıcıya göre kaynakların ölçeğini artırmayı veya azaltmayı otomatik hale getirmektir. Azure İşlevleri ve PowerShell kullanarak bunu nasıl başarmak için buradaki örneğimize göz atın.

Bu yaklaşımın dezavantajı, öngörülemeyen değişen ölçek gereksinimlerine gerçek zamanlı olarak yanıt verememeniz olabilir. Bunun yerine sisteminizde, istemci/SDK düzeyinde veya Otomatik Ölçeklendirme'yi kullanarak uygulama bağlamından yararlanmanız gerekebilir.

Belirli bir SDK ile CQL sorguları kullanma

Verilen veritabanı veya kapsayıcı için CQL ALTER komutlarını yürüterek sistemi kodla dinamik olarak ölçeklendikleyebilirsiniz.

Bu yaklaşımın avantajı, ölçek gereksinimlerine dinamik olarak ve uygulamanıza uygun özel bir şekilde yanıt vermenizi sağlamasıdır. Bu yaklaşımla standart RU/sn ücretlerinden ve fiyatlarından yararlanmaya devam edebilirsiniz. Sisteminizin ölçek gereksinimleri çoğunlukla tahmin edilebilirse (yaklaşık %70 veya daha fazla), SDK'nın CQL ile kullanılması, otomatik ölçeklendirmeden daha uygun maliyetli bir otomatik ölçeklendirme yöntemi olabilir. Bu yaklaşımın dezavantajı, hız sınırlaması gecikme süresini artırabilirken yeniden denemelerin uygulanmasının oldukça karmaşık olmasıdır.

Otomatik ölçeklendirme sağlanan aktarım hızını kullanma

Aktarım hızı sağlamanın standart (el ile) veya programlı yöntemine ek olarak, Azure Cosmos DB kapsayıcılarını otomatik ölçeklendirme ile sağlanan aktarım hızıyla da yapılandırabilirsiniz. Otomatik ölçeklendirme, SLA'lardan ödün vermeden belirtilen RU aralıklarında tüketim gereksinimlerinize otomatik olarak ve anında ölçeklendirilir. Daha fazla bilgi edinmek için Otomatik ölçeklendirmede Azure Cosmos DB kapsayıcıları ve veritabanları oluşturma makalesine bakın.

Bu yaklaşımın avantajı, sisteminizdeki ölçeklendirme gereksinimlerini yönetmenin en kolay yoludur. Yapılandırılan RU aralıkları içinde hız sınırlaması uygulamaz. Dezavantajı, sisteminizdeki ölçeklendirme gereksinimleri öngörülebilirse, otomatik ölçeklendirmenin yukarıda belirtilen özel durum denetim düzlemini veya SDK düzeyi yaklaşımlarını kullanmaktan daha az uygun maliyetli bir ölçeklendirme yöntemi olmasıdır.

CQL kullanarak otomatik ölçeklendirme için maksimum aktarım hızını (RU) ayarlamak veya değiştirmek için aşağıdakileri kullanın (anahtar alanı/tablo adını buna göre değiştirin):

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

Sonraki adımlar