Ç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 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 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şe sahip tercih edilen bölge Birincil bölge
Birden çok yazma bölgesi En yüksek siparişe sahip tercih edilen bölge En yüksek siparişe sahip tercih edilen bölge

Tercih edilen bir bölge ayarlamazsanız, SDK istemcisi varsayılan olarak birincil bölgeye ayarlanı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 ve 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'sı yanıtlarında 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.

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

Bu olaylar sırasında SLA garantileri hakkında ayrıntılı bilgi 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ölgenin kaldırılmasını 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 sonraki bölgeye yönlendirilir. Tercih listesinde yalnızca bir giriş olması (veya boş olması) ancak hesabın kullanılabilir başka bölgeleri olması durumunda, hesap listesinde bir sonraki bölgeye yönlendirilir.

Hesaba bölge ekleme

Azure Cosmos DB SDK istemcisi her 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 yeniden 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 kullanmak için 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ırıyorsanız, tercih edilen bölge yoksayılır. Bu bölgeyi daha sonra eklerseniz, istemci bölgeyi algılar ve kalıcı olarak bu bölgeye geçer.

Tek bir yazma bölgesi hesabında yazma bölgesinin yükünü 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 bölgesel kesinti bir yazma işlemi sırasında oluşuyorsa, davranış el ile yük devretmeye benzer. Okuma istekleri veya birden çok yazma bölgesi hesabı için 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 yazma işlemi yaptığı ve ardından yerel bir bölgeden okuma yaptığı durumlar olabilir, yerel bölge henüz veri çoğaltmasını (ışık kısıtlaması hızı) almamış olabilir. Bu gibi 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 dener. Birden çok yazma bölgesine sahip hesaplar için aynı oturum semantiği uygulanır, 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 çıkar. İstemci mümkünse isteği birkaç saniye boyunca aynı uç noktada yerel olarak yeniden dener.

Kullanıcı birden fazla bölge içeren tercih edilen bir bölge listesi yapılandırdıysa ve istemci tüm yerel yeniden denemeleri tükettiyse, tercih listesinden 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