Çok bölgeli ortamlarda Azure Cosmos DB SDK'larının kullanılabilirliğini tanılama ve sorunlarını giderme

UYGULANANLAR: NOSQL

Bu makalede, belirli bir bölgeye bağlantı sorunu gördüğünüzde veya bir bölge yük devretmesi oluştuğunda Azure Cosmos DB SDK'larının en son sürümünün davranışı açıklanmaktadır.

Tüm Azure Cosmos DB SDK'ları size bölgesel tercihi özelleştirme seçeneği sağlar. Aşağıdaki özellikler farklı SDK'larda kullanılır:

SDK bölgesel tercihi belirten bir yapılandırmayla başlatıldığında, önce genel uç noktadan kullanılabilir bölgeler de dahil olmak üzere hesap bilgilerini alır. Ardından yapılandırılan bölgesel tercihin ve hesabın kullanılabilir bölgelerinin kesişimini uygular ve sonucu önceliklendirmek için bölgesel tercihteki sırayı kullanır.

Bölgesel tercih yapılandırması hesapta kullanılabilir bir bölge olmayan bölgeler içeriyorsa, değerler yoksayılır. Bu geçersiz bölgeler daha sonra hesaba eklenirse, tercih yapılandırmasında daha yüksekse SDK bunları kullanır.

Hesap türü Okumalar Yazmalar
Tek yazma bölgesi En yüksek siparişle tercih edilen bölge Birincil bölge
Birden çok yazma bölgesi En yüksek siparişle tercih edilen bölge En yüksek siparişle tercih edilen bölge

Tercih edilen bölgeyi ayarlamazsanız, SDK istemcisi varsayılan olarak birincil bölgeyi kullanır:

Hesap türü Okumalar Yazmalar
Tek yazma bölgesi Birincil bölge Birincil bölge
Birden çok yazma bölgesi Birincil bölge Birincil bölge

Not

Birincil bölge , Azure Cosmos DB hesap bölgesi listesindeki ilk bölgeyi ifade eder. Bölgesel tercih olarak belirtilen değerler mevcut Azure bölgeleriyle eşleşmiyorsa yoksayılır. Mevcut bir bölgeyle eşleşiyorsa ancak hesap bu bölgeye çoğaltılmazsa istemci, birincil bölgeyle eşleşen veya birincil bölgeyle eşleşen bir sonraki tercih edilen bölgeye bağlanır.

Uyarı

Bu belgede açıklanan yük devretme ve kullanılabilirlik mantığı istemci yapılandırmasında devre dışı bırakılabilir. Bu, kullanıcı uygulaması kullanılabilirlik hatalarını işlemediği sürece önerilmez. Bu, şu şekilde yapılabilir:

Normal koşullarda, SDK istemcisi tercih edilen bölgeye (bölgesel bir tercih ayarlandıysa) veya birincil bölgeye (tercih ayarlanmadıysa) bağlanır ve aşağıdaki senaryolardan herhangi biri gerçekleşmediği sürece işlemler bu bölgeyle sınırlandırılır.

Bu durumlarda, Azure Cosmos DB SDK'sını kullanan istemci günlükleri kullanıma sunar ve işlem tanılama bilgilerinin bir parçası olarak yeniden deneme bilgilerini içerir:

  • .NET V2 SDK'daki yanıtlarda RequestDiagnosticsString özelliği.
  • .NET V3 SDK'sında yanıtlar ve özel durumlarla ilgili Tanılama özelliği.
  • Java V4 SDK'sında yanıtlar ve özel durumlardaki getDiagnostics() yöntemi.

Bir sonraki bölgeyi tercih sırasına göre belirlerken SDK istemcisi, tercih edilen bölgelere (varsa) öncelik verirseniz hesap bölgesi listesini kullanır.

Bu olaylar sırasında SLA garantileriyle ilgili kapsamlı bir ayrıntı için bkz. Kullanılabilirlik için SLA'lar.

Hesaptan bölge kaldırma

Azure Cosmos DB hesabından bir bölgeyi kaldırdığınızda, hesabı etkin olarak kullanan herhangi bir SDK istemcisi arka uç yanıt kodu aracılığıyla bölge kaldırma işlemini algılar. İstemci daha sonra bölgesel uç noktayı kullanılamaz olarak işaretler. İstemci geçerli işlemi yeniden dener ve gelecekteki tüm işlemler tercih sırasına göre kalıcı olarak bir sonraki bölgeye yönlendirilir. Tercih listesinde yalnızca bir giriş varsa (veya boşsa) ancak hesapta başka bölgeler varsa, hesap listesinde bir sonraki bölgeye yönlendirilir.

Hesaba bölge ekleme

Azure Cosmos DB SDK istemcisi 5 dakikada bir hesap yapılandırmasını okur ve farkında olduğu bölgeleri yeniler.

Bir bölgeyi kaldırır ve daha sonra hesaba geri eklerseniz, eklenen bölgenin SDK yapılandırmasında geçerli bağlı bölgeden daha yüksek bir bölgesel tercih sırası varsa, SDK bu bölgeyi kalıcı olarak kullanmaya geri döner. Eklenen bölge algılandıktan sonra, gelecekteki tüm istekler bu bölgeye yönlendirilir.

İstemciyi tercihen Azure Cosmos DB hesabının olmadığı bir bölgeye bağlanacak şekilde yapılandırdığınızda tercih edilen bölge yoksayılır. Bu bölgeyi daha sonra eklerseniz, istemci bölgeyi algılar ve kalıcı olarak o bölgeye geçer.

Yazma bölgesinin yükünü tek bir yazma bölgesi hesabında devretme

Geçerli yazma bölgesinin yük devretmesini başlatırsanız, bir sonraki yazma isteği bilinen bir arka uç yanıtıyla başarısız olur. Bu yanıt algılandığında, istemci yeni yazma bölgesini öğrenmek için hesabı sorgular ve geçerli işlemi yeniden denemeye devam eder ve gelecekteki tüm yazma işlemlerini yeni bölgeye kalıcı olarak yönlendirir.

Bölgesel kesinti

Hesap tek bir yazma bölgesiyse ve bir yazma işlemi sırasında bölgesel kesinti oluşursa, davranış el ile yük devretmeye benzer. Okuma istekleri veya birden çok yazma bölgesi hesabı için bu davranış, bir bölgeyi kaldırmaya benzer.

Oturum tutarlılığı garantileri

Oturum tutarlılığını kullanırken istemcinin kendi yazmalarını okuyabileceğini garanti etmesi gerekir. Okuma bölgesi tercihinin yazma bölgesinden farklı olduğu tek yazma bölgesi hesaplarında, kullanıcının bir yazma işlemi yaptığı ve ardından yerel bir bölgeden okuma yaptığı durumlar olabilir, yerel bölge henüz veri çoğaltmasını almamış olabilir (ışık kısıtlaması hızı). Böyle durumlarda SDK, okuma işleminde hizmetten belirli bir hata alır ve oturum tutarlılığını sağlamak için birincil bölgede okuma işlemini yeniden denenir. Birden çok yazma bölgesine sahip hesaplar için aynı oturum semantiği geçerlidir, ancak birden çok yazma bölgesi olduğundan, yeniden denemeler tercih edilen bölge listesi veya hesabın bölge sırası kullanılarak verilir.

TCP protokolünde geçici bağlantı sorunları

Azure Cosmos DB SDK istemcisinin TCP protokollerini kullanacak şekilde yapılandırıldığı senaryolarda, belirli bir istek için ağ koşullarının belirli bir uç noktayla iletişimi geçici olarak etkilediği durumlar olabilir. Bu geçici ağ koşulları TCP zaman aşımları ve Hizmet Kullanılamıyor (HTTP 503) hataları olarak ortaya çıkabilir. İstemci mümkünse isteği birkaç saniye boyunca aynı uç noktada yerel olarak yeniden dener .

Kullanıcı birden fazla bölge içeren bir tercih edilen bölge listesi yapılandırdıysa ve istemci tüm yerel yeniden denemeleri tükettiyse, tercih listesinden bir sonraki bölgede bu tek işlemi yeniden denemeyi deneyebilir. Yazma işlemleri yalnızca Azure Cosmos DB hesabında birden çok yazma bölgesi etkinleştirilmişse başka bir bölgede yeniden denenebilirken, okuma işlemleri kullanılabilir herhangi bir bölgede yeniden denenebilir.

Sonraki adımlar