Bagikan melalui


Menerapkan kebijakan coba lagi dengan .NET

Aplikasi apa pun yang berjalan di cloud atau berkomunikasi dengan layanan dan sumber daya jarak jauh harus dapat menangani kesalahan sementara. Umum bagi aplikasi ini untuk mengalami kesalahan karena hilangnya konektivitas jaringan sesaat, batas waktu permintaan saat layanan atau sumber daya sibuk, atau faktor lainnya. Pengembang harus membangun aplikasi untuk menangani kesalahan sementara secara transparan untuk meningkatkan stabilitas dan ketahanan.

Dalam artikel ini, Anda mempelajari cara menggunakan pustaka klien Azure Storage untuk .NET guna menyiapkan kebijakan coba lagi untuk aplikasi yang tersambung ke Azure Blob Storage. Kebijakan coba lagi menentukan bagaimana aplikasi menangani permintaan yang gagal, dan harus selalu disetel agar sesuai dengan persyaratan bisnis aplikasi dan sifat kegagalan.

Mengonfigurasi opsi coba lagi

Kebijakan percobaan kembali untuk Blob Storage dikonfigurasi secara terprogram, menawarkan kontrol atas bagaimana opsi coba lagi diterapkan ke berbagai permintaan dan skenario layanan. Misalnya, aplikasi web yang mengeluarkan permintaan berdasarkan interaksi pengguna mungkin menerapkan kebijakan dengan lebih sedikit percobaan ulang dan penundaan yang lebih singkat untuk meningkatkan responsivitas dan memberi tahu pengguna ketika kesalahan terjadi. Atau, aplikasi atau komponen yang menjalankan permintaan batch di latar belakang dapat meningkatkan jumlah percobaan ulang dan menggunakan strategi backoff eksponensial untuk memungkinkan waktu permintaan berhasil diselesaikan.

Tabel berikut mencantumkan properti kelas RetryOptions , bersama dengan jenis, deskripsi singkat, dan nilai default jika Anda tidak membuat perubahan. Anda harus proaktif dalam menyetel nilai properti ini untuk memenuhi kebutuhan aplikasi Anda.

Properti Tipe Deskripsi Nilai default
Tunda Rentang Waktu Penundaan antara upaya coba lagi untuk pendekatan tetap atau penundaan untuk mendasarkan perhitungan untuk pendekatan berbasis backoff. Jika layanan menyediakan header respons Coba Lagi-Setelah, coba lagi berikutnya ditunda oleh durasi yang ditentukan oleh nilai header. 0,8 detik
MaxDelay Rentang Waktu Penundaan maksimum yang diizinkan antara upaya coba lagi ketika layanan tidak menyediakan header respons Coba Lagi-Setelah. Jika layanan menyediakan header respons Coba Lagi-Setelah, coba lagi berikutnya ditunda oleh durasi yang ditentukan oleh nilai header. 1 menit
MaxRetries int Jumlah maksimum upaya coba lagi sebelum menyerah. 5 (lihat catatan)
Mode Coba LagiMode Pendekatan yang digunakan untuk menghitung penundaan coba ulang. Eksponensial
NetworkTimeout Rentang Waktu Batas waktu diterapkan ke operasi jaringan individual. 100 detik

Catatan

StorageClientOptions meningkatkan nilai default untuk MaxRetries dari 3 menjadi 5. Semua properti lain memiliki nilai default yang sama dengan RetryOptions.

Dalam contoh kode ini untuk Blob Storage, kami mengonfigurasi opsi coba lagi di Retry properti kelas BlobClientOptions . Kemudian, kami membuat objek klien untuk layanan blob menggunakan opsi coba lagi.

// Provide the client configuration options for connecting to Azure Blob Storage
BlobClientOptions blobOptions = new BlobClientOptions()
{
    Retry = {
        Delay = TimeSpan.FromSeconds(2),
        MaxRetries = 5,
        Mode = RetryMode.Exponential,
        MaxDelay = TimeSpan.FromSeconds(10),
        NetworkTimeout = TimeSpan.FromSeconds(100)
    },
};

BlobServiceClient blobServiceClient = new BlobServiceClient(
    accountUri,
    new DefaultAzureCredential(),
    blobOptions);

Dalam contoh ini, setiap permintaan layanan yang BlobServiceClient dikeluarkan dari objek menggunakan opsi coba lagi seperti yang BlobClientOptions didefinisikan dalam objek. Anda dapat mengonfigurasi berbagai strategi coba lagi untuk klien layanan berdasarkan kebutuhan aplikasi Anda.

Menggunakan geo-redundansi untuk meningkatkan ketahanan aplikasi

Jika aplikasi Anda memerlukan ketersediaan tinggi dan ketahanan yang lebih besar terhadap kegagalan, Anda dapat memanfaatkan opsi geo-redundansi Azure Storage sebagai bagian dari kebijakan percobaan kembali Anda. Akun penyimpanan yang dikonfigurasi untuk replikasi geo-redundan direplikasi secara sinkron di wilayah primer, dan direplikasi secara asinkron ke wilayah sekunder yang berjarak ratusan mil.

Azure Storage menawarkan dua opsi untuk replikasi geo-redundan: Penyimpanan geo-redundan (GRS) dan Penyimpanan geo-zona-redundan (GZRS). Selain mengaktifkan geo-redundansi untuk akun penyimpanan Anda, Anda juga perlu mengonfigurasi akses baca ke data di wilayah sekunder. Untuk mempelajari cara mengubah opsi replikasi untuk akun penyimpanan Anda, lihat Mengubah cara akun penyimpanan direplikasi.

Dalam contoh ini, kami mengatur properti GeoRedundantSecondaryUri di BlobClientOptions. Jika properti ini diatur, URI sekunder digunakan untuk GET atau HEAD permintaan selama percobaan ulang. Jika status respons dari URI sekunder adalah 404, maka percobaan ulang berikutnya untuk permintaan tidak menggunakan URI sekunder lagi, karena kode status ini menunjukkan bahwa sumber daya mungkin belum menyebar di sana. Jika tidak, percobaan ulang berikutnya bolak-balik antara URI primer dan sekunder.

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

// Provide the client configuration options for connecting to Azure Blob Storage
BlobClientOptions blobOptionsGRS = new BlobClientOptions()
{
    Retry = {
        Delay = TimeSpan.FromSeconds(2),
        MaxRetries = 5,
        Mode = RetryMode.Exponential,
        MaxDelay = TimeSpan.FromSeconds(10),
        NetworkTimeout = TimeSpan.FromSeconds(100)
    },

    // Set the secondary storage URI
    GeoRedundantSecondaryUri = secondaryAccountUri
};

BlobServiceClient blobServiceClient = new BlobServiceClient(
    accountUri,
    new DefaultAzureCredential(),
    blobOptionsGRS);

Aplikasi yang menggunakan geo-redundansi perlu diingat beberapa pertimbangan desain tertentu. Untuk mempelajari lebih lanjut, lihat Menggunakan geo-redundansi untuk merancang aplikasi yang sangat tersedia.

Langkah berikutnya

  • Artikel ini adalah bagian dari panduan pengembang Blob Storage untuk .NET. Lihat daftar lengkap artikel panduan pengembang di Membangun aplikasi Anda.
  • Untuk panduan arsitektur dan praktik terbaik umum untuk kebijakan coba lagi, lihat Penanganan kesalahan sementara.
  • Untuk panduan tentang menerapkan pola coba lagi untuk kegagalan sementara, lihat Pola coba lagi.