Tutorial: Membangun aplikasi yang sangat tersedia dengan penyimpanan Blob

Tutorial ini adalah bagian pertama dari seri. Di dalam aplikasi, Anda pelajari cara membuat data aplikasi sangat tersedia Anda di Azure.

Ketika Anda telah menyelesaikan tutorial ini, Anda akan memiliki aplikasi konsol yang mengunggah dan mengambil blob dari akun penyimpanan read-access geo-zone-redundant (RA-GZRS).

Geo-redundansi di Azure Storage mereplikasi transaksi secara asinkron dari wilayah utama ke wilayah sekunder yang berjarak ratusan mil. Proses replikasi ini menjamin bahwa data di wilayah sekunder pada akhirnya konsisten. Aplikasi konsol menggunakan pola pemutus sirkuit untuk menentukan titik akhir mana yang akan disambungkan, secara otomatis beralih di antara titik akhir karena kegagalan dan pemulihan disimulasikan.

Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.

Di bagian salah satu seri, Anda belajar cara:

  • Buat akun penyimpanan
  • Atur string koneksi
  • Jalankan aplikasi konsol

Prasyarat

Untuk menyelesaikan tutorial ini:

Masuk ke portal Azure

Masuk ke portal Azure.

Buat akun penyimpanan

Akun penyimpanan menyediakan ruang nama unik untuk menyimpan dan mengakses objek data Azure Storage Anda.

Ikuti langkah-langkah berikut untuk membuat akun penyimpanan lewah geo-zona akses baca (RA-GZRS):

  1. Pilih tombol Buat sumber daya di portal Microsoft Azure.

  2. Pilih Akun penyimpanan - blob, file, tabel, antrean dari halaman Baru.

  3. Isi formulir akun penyimpanan dengan informasi berikut, seperti yang diperlihatkan dalam gambar berikut dan pilih Buat:

    Pengaturan Sampel nilai Deskripsi
    Langganan Langganan saya Untuk detail tentang langganan Anda, lihat Langganan.
    ResourceGroup myResourceGroup Untuk nama grup sumber daya yang valid, lihat Aturan dan batasan pemberian nama.
    Nama mystorageaccount Nama unik untuk akun penyimpanan Anda.
    Location US Timur Pilih lokasi.
    Performa Standard Performa standar adalah pilihan yang baik untuk skenario contoh.
    Jenis akun StorageV2 Direkomendasikan untuk menggunakan akun penyimpanan v2 tujuan umum. Untuk informasi selengkapnya tentang jenis akun penyimpanan Azure, lihat Gambaran umum akun penyimpanan.
    Replikasi Akses baca untuk penyimpanan zona geo-redundan (RA-GRS) Wilayah utama adalah zona-redundan dan direplikasi ke wilayah sekunder, dengan akses baca ke wilayah sekunder diaktifkan.
    Tingkat akses Populer Gunakan hot tier untuk data yang sering diakses.

    create storage account

Unduh sampel

Unduh proyek sampel, ekstrak (unzip) file storage-dotnet-circuit-breaker-pattern-ha-apps-using-ra-grs.zip, lalu buka folder v12 untuk menemukan file proyek.

Anda juga dapat menggunakan git untuk mengkloning repositori ke lingkungan pengembangan lokal Anda. Proyek sampel di folder v12 berisi aplikasi konsol.

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

Mengonfigurasi sampel

Permintaan aplikasi ke penyimpanan Azure Blob harus diotorisasi. Menggunakan kelas DefaultAzureCredential yang disediakan oleh pustaka klien Azure.Identity adalah pendekatan yang disarankan untuk tersambung ke layanan Azure dalam kode Anda. Sampel kode .NET v12 menggunakan pendekatan ini. Untuk mempelajari selengkapnya, silakan lihat Gambaran umum DefaultAzureCredential.

Anda juga dapat mengotorisasi permintaan untuk Azure Blob Storage menggunakan kunci akses akun. Namun, pendekatan ini harus digunakan dengan hati-hati untuk melindungi kunci akses agar tidak terekspos.

Jalankan aplikasi konsol

Di Visual Studio, tekan F5 atau pilih Mulai untuk memulai debug aplikasi. Visual Studio secara otomatis memulihkan paket NuGet yang hilang jika pemulihan paket dikonfigurasi. Lihat Pemasangan dan pemasangan kembali paket dengan pemulihan paket untuk mempelajari selengkapnya.

Saat jendela konsol diluncurkan, aplikasi akan mendapatkan status wilayah sekunder dan menulis informasi tersebut ke konsol. Kemudian aplikasi akan membuat kontainer di akun penyimpanan dan mengunggah blob ke kontainer. Setelah blob diunggah, aplikasi akan terus memeriksa untuk melihat apakah blob telah direplikasi ke wilayah sekunder. Pemeriksaan ini berlanjut sampai blob direplikasi, atau mencapai jumlah maksimum iterasi seperti yang ditentukan oleh kondisi perulangan.

Selanjutnya, aplikasi memasukkan perulangan dengan perintah untuk mengunduh blob, yang awalnya membaca dari penyimpanan utama. Tekan tombol apa pun untuk mengunduh blob. Jika terdapat pembacaan kesalahan yang dapat diulang dari wilayah utama, coba kembali permintaan baca dilakukan terhadap titik akhir wilayah sekunder. Output konsol akan ditampilkan saat wilayah dialihkan ke sekunder.

Screenshot of Console output for secondary request.

Untuk keluar dari perulangan dan membersihkan sumber daya, tekan tombol Esc pada perintah unduh blob.

Memahami kode sampel

Sampel membuat objek BlobServiceClient yang dikonfigurasi dengan opsi coba kembali dan titik akhir wilayah sekunder. Konfigurasi ini memungkinkan aplikasi untuk secara otomatis beralih ke wilayah sekunder jika permintaan gagal pada titik akhir wilayah utama.

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);

Ketika properti GeoRedundantSecondaryUri diatur dalam BlobClientOptions, percobaan kembali untuk permintaan GET atau HEAD akan beralih menggunakan titik akhir sekunder. Percobaan kembali berikutnya akan bergantian antara titik akhir utama dan sekunder. Namun, jika status respons dari Uri sekunder adalah 404, maka percobaan kembali berikutnya untuk permintaan tidak akan lagi menggunakan Uri sekunder, karena kode kesalahan ini menunjukkan bahwa sumber daya belum direplikasi ke wilayah sekunder.

Langkah berikutnya

Di bagian salah satu seri, Anda belajar tentang membuat aplikasi yang sangat tersedia dengan akun penyimpanan RA-GZRS.

Lanjutkan ke bagian dua dari seri untuk mempelajari cara mensimulasikan kegagalan dan memaksa aplikasi Anda untuk menggunakan titik akhir RA-GZRS sekunder.

Sumber daya

Untuk sampel kode terkait menggunakan SDK yang tidak digunakan lagi, lihat sumber daya berikut: