Apache Cassandra için Azure Cosmos DB hesabını 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ünde 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 stratejiye karar vekleyebilirsiniz.

Azure portalını kullanma

Azure portal 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, aktarım hızını Azure portal veritabanı veya kapsayıcı düzeyinde 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" terimlerine 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ı gerektirmesidir. 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 özelliği sağlar. Yönergeler ve örnekler için Azure Resource Manager, PowerShell ve Azure CLI makalelerine bakın.

Bu yöntemin avantajı, en yüksek etkinliği veya düşük etkinlik dönemlerini dikkate almak için bir zamanlayıcıya dayalı olarak 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 verememek 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ını 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), CQL ile SDK kullanmak, otomatik ölçeklendirmeden daha uygun maliyetli bir otomatik ölçeklendirme yöntemi olabilir. Bu yaklaşımın dezavantajı, hız sınırlama gecikme süresini artırabilirken yeniden denemelerin uygulanması oldukça karmaşık olabilir.

Sağlanan aktarım hızını otomatik ölçeklendirmeyi kullanma

Standart (el ile) veya program aracılığıyla aktarım hızı sağlama 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 yolu olmasıdır. 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 ısmarlama 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 (keyspace/tablo adını buna göre değiştirerek):

# 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