Azure Cosmos DB tümleşik önbelleğini yapılandırma
UYGULANANLAR: NoSQL
Bu makalede ayrılmış bir ağ geçidi sağlama, tümleşik önbelleği yapılandırma ve uygulamanızı bağlama işlemleri açıklanmaktadır.
Önkoşullar
- Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
- Azure Cosmos DB kullanan mevcut bir uygulama. Uygulamanız yoksa bazı örnekler aşağıda verilmiştir.
- NoSQL hesabı için mevcut bir Azure Cosmos DB API'si.
Ayrılmış ağ geçidini sağlama
Azure portalında bir Azure Cosmos DB hesabına gidin ve Ayrılmış Ağ Geçidi sekmesini seçin.
Ayrılmış ağ geçidi formunu aşağıdaki ayrıntılarla doldurun:
- Ayrılmış Ağ Geçidi - Sağlanan'a geçiş düğmesini açın.
- SKU - Gerekli işlem ve bellek boyutuna sahip bir SKU seçin. Tümleşik önbellek belleğin yaklaşık %50'sini kullanır ve kalan bellek meta veriler ve istekleri arka uç bölümlerine yönlendirmek için kullanılır.
- Örnek sayısı - Düğüm sayısı. Geliştirme amacıyla D4 boyutunda bir düğümle başlamanızı öneririz. Önbelleğe almanız gereken veri miktarına bağlı olarak ve yüksek kullanılabilirlik elde etmek için ilk testten sonra düğüm boyutunu artırabilirsiniz.
Kaydet'i seçin ve ayrılmış ağ geçidi sağlama işleminin tamamlanması için yaklaşık 5-10 dakika bekleyin. Sağlama tamamlandığında aşağıdaki bildirimi görürsünüz:
Tümleşik önbelleği yapılandırma
Ayrılmış bir ağ geçidi oluşturduğunuzda, tümleşik önbellek otomatik olarak sağlanır.
Uygulamanızın bağlantı dizesi yeni ayrılmış ağ geçidi uç noktasını kullanacak şekilde değiştirin.
Güncelleştirilmiş ayrılmış ağ geçidi bağlantı dizesi Anahtarlar dikey penceresindedir:
Tüm ayrılmış ağ geçidi bağlantı dizesi aynı deseni izler. Özgün bağlantı dizesi kaldırın
documents.azure.com
ve ilesqlx.cosmos.azure.com
değiştirin. Ayrılmış ağ geçidini kaldırıp yeniden oluştursanız bile her zaman aynı bağlantı dizesi sahip olur.Aynı Azure Cosmos DB hesabını kullanarak tüm uygulamalarda bağlantı dizesi değiştirmeniz gerekmez. Örneğin, ağ geçidi modunu ve ayrılmış ağ geçidi uç noktasını kullanırken diğerinde doğrudan modu kullanan bir
CosmosClient
CosmosClient
bağlantınız olabilir. Başka bir deyişle, ayrılmış ağ geçidi eklemek Azure Cosmos DB'ye bağlanmanın mevcut yollarını etkilemez..NET veya Java SDK kullanıyorsanız bağlantı modunu ağ geçidi moduna ayarlayın. Python ve Node.js SDK'ları için bu adım gerekli değildir çünkü ağ geçidi modunun yanı sıra başka bağlanma seçenekleri yoktur.
Not
En son .NET veya Java SDK sürümünü kullanıyorsanız, varsayılan bağlantı modu doğrudan moddur. Tümleşik önbelleği kullanmak için bu varsayılanı geçersiz kılmanız gerekir.
İstek tutarlılığını ayarlama
İstek tutarlılığının oturum veya nihai olduğundan emin olmanız gerekir. Aksi takdirde, istek her zaman tümleşik önbelleği atlar. Tüm okuma işlemleri için belirli bir tutarlılığı yapılandırmanın en kolay yolu bunu hesap düzeyinde ayarlamaktır. Tutarlılığı istek düzeyinde de yapılandırabilirsiniz. Bu, okumalarınızın yalnızca bir alt kümesinin tümleşik önbelleği kullanmasını istiyorsanız önerilir.
MaxIntegratedCacheStaleness ayarını yapın
eski önbelleğe alınmış verileri tolere etmek istediğiniz en uzun süre olan öğesini yapılandırın MaxIntegratedCacheStaleness
. Yinelenen nokta okumalarının ve sorguların MaxIntegratedCacheStaleness
önbellek isabetleri olma olasılığını artıracağından mümkün olduğunca yüksek olarak ayarlanması önerilir. 0 olarak ayarlarsanızMaxIntegratedCacheStaleness
, tutarlılık düzeyinden bağımsız olarak okuma isteğiniz hiçbir zaman tümleşik önbelleği kullanmaz. Yapılandırılmadığında varsayılan MaxIntegratedCacheStaleness
değer 5 dakikadır.
Not
MaxIntegratedCacheStaleness
10 yıla kadar ayarlanabilir. Uygulamada bu değer maksimum eskime süresidir ve düğüm yeniden başlatmaları nedeniyle önbellek daha erken sıfırlanabilir.
ayarının ayarlanması MaxIntegratedCacheStaleness
her SDK'nın şu sürümlerinde desteklenir:
SDK | Desteklenen sürümler |
---|---|
.NET SDK v3 | >= 3.30.0 |
Java SDK v4 | >= 4.34.0 |
Node.js SDK’sı | >=3.17.0 |
Python SDK'sı | >=4.3.1 |
FeedIterator<MyClass> myQuery = container.GetItemQueryIterator<MyClass>(new QueryDefinition("SELECT * FROM c"), requestOptions: new QueryRequestOptions
{
DedicatedGatewayRequestOptions = new DedicatedGatewayRequestOptions
{
MaxIntegratedCacheStaleness = TimeSpan.FromMinutes(30)
}
}
);
Tümleşik önbelleği atlama
Hangi isteklerin BypassIntegratedCache
tümleşik önbelleği kullandığını denetlemek için istek seçeneğini kullanın. Tümleşik önbelleği atlayan yazma işlemleri, nokta okumaları ve sorgular önbellek depolama alanını kullanmaz ve diğer öğeler için alan tasarrufu sağlar. Önbelleği atlayan istekler hala ayrılmış ağ geçidi üzerinden yönlendirilir. Bu istekler arka uçtan ve maliyet RU'larından sunulur.
Önbelleğin atlanması her SDK'nın şu sürümlerinde desteklenir:
SDK | Desteklenen sürümler |
---|---|
.NET SDK v3 | >= 3.39.0 |
Java SDK v4 | >= 4.49.0 |
Node.js SDK’sı | >= 4.1.0 |
Python SDK'sı | Desteklenmez |
FeedIterator<MyClass> myQuery = container.GetItemQueryIterator<MyClass>(new QueryDefinition("SELECT * FROM c"), requestOptions: new QueryRequestOptions
{
DedicatedGatewayRequestOptions = new DedicatedGatewayRequestOptions
{
BypassIntegratedCache = true
}
}
);
Önbellek isabetlerini doğrulama
Son olarak, istek ücretinin 0 olup olmadığını görerek uygulamanızı yeniden başlatabilir ve yinelenen nokta okumaları veya sorguları için tümleşik önbellek isabetlerini doğrulayabilirsiniz. Ayrılmış ağ geçidi uç noktasını kullanmak üzere öğesini CosmosClient
değiştirdikten sonra, tüm istekler ayrılmış ağ geçidi üzerinden yönlendirilir.
Bir okuma isteğinin (nokta okuma veya sorgu) tümleşik önbelleği kullanabilmesi için aşağıdaki ölçütlerin tümü doğru olmalıdır:
- İstemciniz ayrılmış ağ geçidi uç noktasına bağlanır
- İstemciniz ağ geçidi modunu kullanıyor (Python ve Node.js SDK'lar her zaman ağ geçidi modunu kullanır)
- İsteğin tutarlılığı oturum veya nihai olarak ayarlanmalıdır
Not
Tümleşik önbellek hakkında geri bildiriminiz var mı? Duymak istiyoruz! Geri bildirimleri doğrudan Azure Cosmos DB mühendislik ekibiyle paylaşmaktan çekinmeyin: cosmoscachefeedback@microsoft.com