البرنامج التعليمي: إنشاء تطبيق التوافر العالي مع تخزين كائنات البيانات الثنائية

يُعد هذا البرنامج التعليمي جزءًا أول ضمن سلسلة. يمكنك في هذا البرنامج التعليمي معرفة كيفية تحويل بيانات التطبيق إلى بيانات التوافر العالي في Azure.

عند الانتهاء من هذا البرنامج التعليمي، سيكون لديك تطبيق وحدة تحكم لتحميل كائنات البيانات الثنائية واستعادتها من حساب تخزين نسخ المنطقة الجغرافية للوصول إلى القراء.

يعمل النسخ الجغرافي في تخزين Azure على نسخ المعاملات بشكل غير متزامن من منطقة أساسية إلى منطقة ثانوية تبعد مئات الأميال. تضمن عملية النسخ المتماثل هذه تناسق البيانات في المنطقة الثانوية في النهاية. يستخدم تطبيق وحدة التحكم نمط قاطع الدائرة لتحديد نقطة النهاية التي يجب الاتصال بها والتغيير تلقائيا بين نقاط النهاية حيث تُجرى محاكاة حالات الفشل واستعادة البيانات.

في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.

في الجزء الأول من السلسلة، ستتعلم كيفية:

  • إنشاء حساب تخزين
  • اختيار سلسلة الاتصال
  • تشغيل تطبيق وحدة التحكم

المتطلبات الأساسية

لإكمال هذا البرنامج التعليمي:

سجِّل الدخول إلى مدخل Azure

قم بتسجيل الدخول إلى بوابة Azure.

إنشاء حساب تخزين

يُوفر حساب التخزين مساحة مميزة لتخزين كائنات بيانات تخزين Azure والوصول إليها.

اتبع هذه الخطوات لإنشاء حساب تخزين نسخ المنطقة الجغرافية للوصول للقراءة:

  1. اختر الزر إنشاء موردفي مدخل Azure.

  2. حدد Storage account - blob, file, table, queue من صفحة جديدة.

  3. املأ نموذج حساب التخزين بالمعلومات التالية، حسبما هو موضح في الصورة التالية وحدد إنشاء:

    الإعدادات عينة القيمة ‏‏الوصف
    الاشتراك اشتراكي للحصول على تفاصيل حول اشتراكاتك، راجع الاشتراكات.
    ResourceGroup myResourceGroup للحصول على أسماء مجموعات موارد صالحة، راجع قواعد وقيود التسمية.
    الاسم mystorageaccount أدخل اسمًا مميزًا لحساب تخزينك.
    Location شرق الولايات المتحدة اختر الموقع
    الاداء قياسي يُعد الأداء القياسي خيارًا جيدًا للسيناريو النموذجي.
    نوع الحساب StorageV2 يُوصى باستخدام حساب تخزين إصدار 2 للأغراض العامة. للمزيد من المعلومات عن حسابات التخزين، راجع نظرة عامة على حساب التخزين.
    النسخ المتماثل التخزين المتكرر للمنطقة الجغرافية للوصول للقراءة (RA-GZRS) المنطقة الأساسية هي المنطقة المكررة ويتم نسخها إلى منطقة ثانوية مع تمكين الوصول للقراءة إلى المنطقة الثانوية.
    مستوى الوصول Hot استخدم الطبقة السريعة للبيانات التي يتم الوصول إليها بشكل متكرر.

    create storage account

تنزيل العينة

قم بتنزيل نموذج المشروع، واستخرج (فك ضغط) ملف storage-dotnet-circuit-breaker-pattern-ha-apps-using-ra-grs.zip، ثم انتقل إلى مجلد v12 للعثور على ملفات المشروع.

يمكنك أيضًا استخدام git لاستنساخ المستودع إلى بيئة التطوير المحلية الخاصة بك. يحتوي نموذج المشروع في مجلد v12 على تطبيق وحدة تحكم.

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

تهيئة العينة

يجب التصريح بطلبات التطبيق إلى تخزين Azure Blob. استخدام الفئة DefaultAzureCredential التي توفرها مكتبة العميل Azure.Identity هو النهج الموصى به للاتصال بخدمات Azure في التعليمات البرمجية الخاصة بك. يستخدم نموذج التعليمات البرمجية .NET v12 هذا الأسلوب. لمعرفة المزيد، يرجى الاطلاع على نظرة عامة على DefaultAzureCredential.

يمكنك أيضًا تخويل الطلبات إلى Azure Blob Storage باستخدام مفتاح الوصول إلى الحساب. ومع ذلك، يجب استخدام هذا النهج بحذر لحماية مفاتيح الوصول من التعرض.

تشغيل تطبيق وحدة التحكم

في Visual Studio، اضغط F5 أو حدد بدء لبدء تصحيح أخطاء التطبيق. يستعيد Visual Studio تلقائيًا حزم NuGet المفقودة إذا تم تكوين استعادة الحزمة. راجع تثبيت وإعادة تثبيت الحزم مع استعادة الحزمة لمعرفة المزيد.

عند تشغيل نافذة وحدة التحكم، سيحصل التطبيق على حالة المنطقة الثانوية ويكتب هذه المعلومات إلى وحدة التحكم. ثم سيقوم التطبيق بإنشاء حاوية في حساب التخزين وتحميل كائن ثنائي كبير الحجم إلى الحاوية. بمجرد تحميل الكائن الثنائي كبير الحجم، سيتحقق التطبيق باستمرار لمعرفة ما إذا كان الكائن الثنائي كبير الحجم قد نسخ إلى المنطقة الثانوية. يستمر هذا الفحص حتى يتم نسخ الكائن الثنائي كبير الحجم، أو نصل إلى الحد الأقصى لعدد التكرارات كما هو محدد من قبل شروط التكرار الحلقي.

بعد ذلك، يدخل التطبيق حلقة مع مطالبة بتنزيل الكائن الثنائي كبير الحجم، للقراءة في البداية من التخزين الأساسي. اضغط على أي مفتاح لتنزيل الكائن الثنائي كبير الحجم. إذا كان هناك خطأ قابل لإعادة المحاولة في القراءة من المنطقة الأساسية، يتم تنفيذ إعادة محاولة طلب القراءة مقابل نقطة نهاية المنطقة الثانوية. سيظهر إخراج وحدة التحكم عند التبديل إلى المنطقة الثانوية.

Screenshot of Console output for secondary request.

للخروج من التكرار الحلقي وتنظيف الموارد، اضغط على المفتاح Esc في مطالبة تنزيل الكائن الثنائي كبير الحجم.

افهم نموذج التعليمات البرمجية

ينشئ النموذج عنصر BlobServiceClient مع تهيئة خيارات إعادة المحاولة ونقطة نهاية المنقطة الثانوية. يسمح هذا التكوين للتطبيق بالتبديل تلقائيا إلى المنطقة الثانوية إذا فشل الطلب على نقطة نهاية المنطقة الأساسية.

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 في BlobClientOptions، سيتم تبديل عمليات إعادة المحاولة لطلبات GET أو HEAD لاستخدام نقطة النهاية الثانوية. ستتناوب عمليات إعادة المحاولة اللاحقة بين نقطة النهاية الأساسية والثانوية. ومع ذلك، إذا كانت حالة الاستجابة من Uri الثانوي هي 404، فلن تستخدم إعادة المحاولة اللاحقة للطلب Uri الثانوي، لأن رمز الخطأ هذا يشير إلى أن المورد لم يتم نسخه نسخًا متماثلًا إلى المنطقة الثانوية.

الخطوات التالية

في الجزء الأول من السلسلة، تعلمت كيفية تحويل التطبيق إلى تطبيق التوافر العالي مع حسابات التخزين RA-GZRS.

تقدم إلى الجزء الثاني من السلسلة لمعرفة كيفية محاكاة فشل التطبيق وإلزام التطبيق على استخدام نقطة النهاية RA-GZRS الثانوية.

الموارد

للحصول على نماذج التعليمات البرمجية ذات الصلة باستخدام SDKs المهملة، راجع الموارد التالية: