Öğretici: Blob depolama ile yüksek oranda kullanılabilir bir uygulama oluşturma

Bu öğretici, bir serinin birinci bölümüdür. Bu uygulamada, uygulama verilerinizi Azure'da yüksek oranda kullanılabilir hale getirme hakkında bilgi edineceksiniz.

Bu öğreticiyi tamamladığınızda, okuma erişimli coğrafi alanlar arası yedekli (RA-GZRS) depolama hesabından blob yükleyen ve alan bir konsol uygulamanız olur.

Azure Depolama'da coğrafi olarak yedeklilik, işlemleri birincil bölgeden yüzlerce kilometre uzaktaki ikincil bölgeye zaman uyumsuz olarak çoğaltır. Bu çoğaltma işlemi, ikincil bölgedeki verilerin nihai olarak tutarlı olmasını sağlar. Konsol uygulaması hangi uç noktaya bağlanacaklarını belirlemek için devre kesici desenini kullanır ve hata ve kurtarma simülasyonu yapılırken uç noktalar arasında otomatik olarak geçiş yapılır.

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Serinin birinci bölümünde şunları öğrenirsiniz:

  • Depolama hesabı oluşturma
  • Bağlantı dizesini ayarlama
  • Konsol uygulamasını çalıştırma

Önkoşullar

Bu öğreticiyi tamamlamak için:

  • Azure geliştirme iş yüküyle Visual Studio 2022'yi yükleyin.

    Screenshot of Visual Studio Azure development workload (under Web & Cloud).

Azure portalda oturum açma

Azure Portal oturum açın.

Depolama hesabı oluşturma

Depolama hesabı, Azure Depolama veri nesnelerinizi depolamak ve bu nesnelere erişmek için benzersiz bir ad alanı sağlar.

Okuma erişimli coğrafi alanlar arası yedekli (RA-GZRS) depolama hesabı oluşturmak için şu adımları izleyin:

  1. Azure portalında Kaynak oluştur düğmesini seçin.

  2. Yeni sayfasından Depolama hesap - blob, dosya, tablo, kuyruk öğesini seçin.

  3. Aşağıdaki bilgileri kullanarak depolama hesabı formunu alttaki resimde gösterildiği gibi doldurun ve Oluştur’u seçin:

    Ayar Örnek değer Açıklama
    Abonelik Aboneliğim Abonelikleriniz hakkında daha ayrıntılı bilgi için bkz. Abonelikler.
    ResourceGroup myResourceGroup Geçerli kaynak grubu adları için bkz. Adlandırma kuralları ve kısıtlamalar.
    Adı mystorageaccount Depolama hesabınız için benzersiz bir ad.
    Konum Doğu ABD Konum seçin.
    Performans Standart Standart performans, örnek senaryo için iyi bir seçenektir.
    Hesap türü Depolama V2 Genel amaçlı v2 depolama hesabı kullanılması önerilir. Azure depolama hesabı türleri hakkında daha fazla bilgi için bkz. Depolama hesaba genel bakış.
    Çoğaltma Okuma erişimli coğrafi alanlar arası yedekli depolama (RA-GZRS) Birincil bölge alanlar arası yedeklidir ve ikincil bölgeye okuma erişimi etkinleştirilmiş olarak ikincil bölgeye çoğaltılır.
    Erişim katmanı Sık Erişimli Sık erişilen veriler için sık erişim katmanını kullanın.

    create storage account

Örneği indirme

Örnek projeyi indirin, storage-dotnet-circuit-breaker-pattern-ha-apps-using-ra-grs.zip dosyasını ayıklayın (sıkıştırmasını açın), ardından proje dosyalarını bulmak için v12 klasörüne gidin.

Depoyu yerel geliştirme ortamınıza kopyalamak için git de kullanabilirsiniz. v12 klasöründeki örnek proje bir konsol uygulaması içerir.

git clone https://github.com/Azure-Samples/storage-dotnet-circuit-breaker-pattern-ha-apps-using-ra-grs.git

Örneği yapılandırma

Azure Blob depolamaya yönelik uygulama istekleri yetkilendirilmelidir. DefaultAzureCredential İstemci kitaplığı tarafından sağlanan sınıfı kullanmakAzure.Identity, kodunuzdaki Azure hizmetlerine bağlanmak için önerilen yaklaşımdır. .NET v12 kod örneği bu yaklaşımı kullanır. Daha fazla bilgi edinmek için bkz . DefaultAzureCredential'a genel bakış.

Ayrıca, hesap erişim anahtarını kullanarak istekleri Azure Blob Depolama yetkilendirmeniz de gerekir. Ancak bu yaklaşım, erişim anahtarlarının kullanıma sunulmaması için dikkatli kullanılmalıdır.

Konsol uygulamasını çalıştırma

Visual Studio'da F5 tuşuna basın veya uygulamada hata ayıklamaya başlamak için Başlat'ı seçin. Paket geri yükleme yapılandırılırsa Visual Studio eksik NuGet paketlerini otomatik olarak geri yükler. Daha fazla bilgi edinmek için bkz . Paket geri yükleme ile paketleri yükleme ve yeniden yükleme.

Konsol penceresi açıldığında, uygulama ikincil bölgenin durumunu alır ve bu bilgileri konsola yazar. Ardından uygulama depolama hesabında bir kapsayıcı oluşturur ve kapsayıcıya bir blob yükler. Blob karşıya yüklendikten sonra uygulama sürekli olarak blob'un ikincil bölgeye çoğaltılıp çoğaltıldığını denetler. Bu denetim, blob çoğaltılana kadar devam eder veya döngü koşulları tarafından tanımlanan en fazla yineleme sayısına ulaşırız.

Ardından uygulama, başlangıçta birincil depolamadan okuyarak blobu indirme istemiyle bir döngüye girer. Blobu indirmek için herhangi bir tuşa basın. Birincil bölgeden yeniden denenebilir bir hata okuması varsa, ikincil bölge uç noktasında okuma isteğinin yeniden denemesi gerçekleştirilir. Bölge ikincil değere geçtiğinde konsol çıkışı gösterilir.

Screenshot of Console output for secondary request.

Döngüden çıkmak ve kaynakları temizlemek için blob indirme istemindeki tuşa basın Esc .

Örnek kodu anlama

Örnek, yeniden deneme seçenekleri ve ikincil bölge uç noktası ile yapılandırılmış bir nesne oluşturur BlobServiceClient . Bu yapılandırma, istek birincil bölge uç noktasında başarısız olursa uygulamanın otomatik olarak ikincil bölgeye geçiş yapmasını sağlar.

string accountName = "<YOURSTORAGEACCOUNTNAME>";
Uri primaryAccountUri = new Uri($"https://{accountName}.blob.core.windows.net/");
Uri secondaryAccountUri = new Uri($"https://{accountName}-secondary.blob.core.windows.net/");

// Provide the client configuration options for connecting to Azure Blob storage
BlobClientOptions blobClientOptions = new BlobClientOptions()
{
    Retry = {
        // The delay between retry attempts for a fixed approach or the delay
        // on which to base calculations for a backoff-based approach
        Delay = TimeSpan.FromSeconds(2),

        // The maximum number of retry attempts before giving up
        MaxRetries = 5,

        // The approach to use for calculating retry delays
        Mode = RetryMode.Exponential,

        // The maximum permissible delay between retry attempts
        MaxDelay = TimeSpan.FromSeconds(10)
    },

    // Secondary region endpoint
    GeoRedundantSecondaryUri = secondaryAccountUri
};

// Create a BlobServiceClient object using the configuration options above
BlobServiceClient blobServiceClient = new BlobServiceClient(primaryAccountUri, new DefaultAzureCredential(), blobClientOptions);

GeoRedundantSecondaryUri özelliği içinde BlobClientOptionsayarlandığında, GET veya HEAD istekleri için yeniden denemeler ikincil uç noktayı kullanmaya geçer. Sonraki yeniden denemeler birincil ve ikincil uç nokta arasında geçiş yapacaktır. Ancak, ikincil Uri'den gelen yanıtın durumu 404 ise, isteğin sonraki yeniden denemeleri artık ikincil Uri'yi kullanmaz çünkü bu hata kodu kaynağın ikincil bölgeye çoğaltılmamış olduğunu gösterir.

Sonraki adımlar

Serinin birinci bölümünde, RA-GZRS depolama hesaplarıyla bir uygulamayı yüksek oranda kullanılabilir hale getirme hakkında bilgi edineceksiniz.

Bir hatanın benzetimini yapmayı ve uygulamanızı ikincil RA-GZRS uç noktasını kullanmaya zorlamayı öğrenmek için serinin ikinci bölümüne ilerleyin.

Kaynaklar

Kullanım dışı SDK'ları kullanan ilgili kod örnekleri için aşağıdaki kaynaklara bakın: