أفضل الممارسات لعزل التطبيقات عن انقطاع ناقل الخدمة والكوارث

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

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

تُعرَّف الكارثة بأنها الخسارة الدائمة لوحدة مقياس ناقل الخدمة أو لمركز البيانات. قد يصبح مركز البيانات متوفرا أو لا يكون متوفرا مرة أخرى. عادة ما تتسبب الكارثة في فقدان بعض أو جميع الرسائل أو البيانات الأخرى. ومن أمثلة هذه الكوارث: الحرائق أو الفيضانات أو الزلازل.

الحماية من الانقطاعات والكوارث - المستوى المتميز

يتم تضمين مفاهيم قابلية الوصول العالية والتعافي من الكوارث مباشرة في المستوى المتميز ناقل خدمة Azure، سواء داخل نفس المنطقة (عبر مناطق التوفر) وعبر مناطق مختلفة (عن طريق التعافي من الكوارث الجغرافية).

التعافي من الكوارث الجغرافية

تدعم طبقة ناقل خدمة Microsoft Azure المتميزة التعافي من الكوارث الجغرافية، على مستوى مساحة الاسم. لمزيد من المعلومات، راجع استعادة الكوارث الجغرافية لـ Azure Service Bus. ميزة التعافي من الكوارث، المتوفرة ل Premium SKU فقط، تنفذ استرداد بيانات التعريف بعد الكوارث، وتعتمد على مساحات الأسماء الأساسية والثانوية. مع التعافي من الكوارث الجغرافية، يتم نسخ بيانات التعريف للكيانات فقط بين مساحات الأسماء الأساسية والثانوية.

مجموعات التوافر

يدعم المستوى المتميز لناقل خدمة Microsoft Azure مناطق التوفر، ما يوفر مواقع معزولة عن الأخطاء داخل نفس منطقة Azure. يدير "ناقل الخدمة" ثلاث نسخ من مخزن الرسائل (1 أساسي و2 ثانوي). يحافظ ناقل خدمة Microsoft Azure على مزامنة جميع النسخ الثلاث لعمليات البيانات والإدارة. إذا فشلت النسخة الأساسية، يتم ترقية إحدى النسخ الثانوية إلى النسخة الأساسية دون أي توقف محسوس. إذا رأيت التطبيقات حالات قطع اتصال عابرة من ناقل خدمة Microsoft Azure، فإن منطق إعادة المحاولة في SDK يعيد الاتصال تلقائيا بناقل خدمة Microsoft Azure.

عند استخدام مناطق التوفر، يتم نسخ كل من بيانات التعريف والبيانات (الرسائل) عبر مراكز البيانات في منطقة التوفر.

إشعار

يتوفر دعم مناطق التوفر للطبقة المتميزة فقط في مناطق Azure حيث توجد مناطق التوفر.

عند إنشاء مساحة اسم الطبقة المتميزة من خلال المدخل، يتم تمكين دعم مناطق التوفر (إذا كان متوفرا في المنطقة المحددة) تلقائيا لمساحة الاسم. عند إنشاء مساحة اسم الطبقة المتميزة من خلال آليات أخرى، مثل قوالب Azure Resource Manager / Bicep أو CLI أو PowerShell، يجب تعيين الخاصية zoneRedundant بشكل صريح لتمكين true مناطق التوفر (إذا كانت متوفرة في المنطقة المحددة). لا توجد تكلفة إضافية لاستخدام هذه الميزة ولا يمكنك تعطيل هذه الميزة أو تمكينها بعد إنشاء مساحة الاسم.

الحماية من الانقطاعات والكوارث - المستوى القياسي

لتحقيق المرونة ضد انقطاع مركز البيانات مع مستوى تسعير المراسلة القياسي، يمكنك استخدام النسخ المتماثل النشط أو السلبي . لكل نهج، إذا كان يجب أن تظل قائمة انتظار أو موضوع معين متاحاً في ظل وجود انقطاع في مركز البيانات، فيمكنك إنشاؤه في كلتا مساحتي الاسم. ويمكن أن يكون لكلا الكيانين نفس الاسم. على سبيل المثال، يمكن الوصول إلى قائمة انتظار أساسية ضمن contosoPrimary.servicebus.windows.net/myQueue، بينما يمكن الوصول إلى نظيرتها الثانوية ضمن contosoSecondary.servicebus.windows.net/myQueue.

إشعار

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

إذا كان التطبيق لا يتطلب اتصالا دائما من المرسل إلى المتلقي، يمكن للتطبيق تنفيذ قائمة انتظار دائمة من جانب العميل لمنع فقدان الرسائل ولتدريع المرسل من أي أخطاء عابرة لناقل خدمة Microsoft Azure.

النسخ المتماثل النشط

يستخدم النسخ المتماثل النشط الكيانات في كلا مساحتي الأسماء لكل عملية. أي عميل يرسل رسالة يرسل نسختين من نفس الرسالة. يتم إرسال النسخة الأولى إلى الكيان الأساسي (على سبيل المثال، contosoPrimary.servicebus.windows.net/sales)، ويتم إرسال النسخة الثانية من الرسالة إلى الكيان الثانوي (على سبيل المثال، contosoSecondary.servicebus.windows.net/sales).

يتلقى العميل رسائل من قائمتي الانتظار. يعالج المتلقي النسخة الأولى من الرسالة، ويتم منع النسخة الثانية. لمنع الرسائل المكررة، يجب على المرسل تمييز كل رسالة باستخدام معرف فريد. يجب تمييز نسختين من الرسالة بنفس المعرف. يمكنك استخدام خصائص ServiceBusMessage.MessageId أو ServiceBusMessage.Subject أو خاصية مخصصة لوضع علامة على الرسالة. يجب أن يحتفظ المتلقي بقائمة من الرسائل التي استلمها بالفعل.

يوضح نموذج [النسخ المتماثل الجغرافي مع المستوى القياسي لناقل خدمة Microsoft Azure][النسخ المتماثل الجغرافي مع المستوى القياسي لناقل خدمة Microsoft Azure] النسخ المتماثل النشط لكيانات المراسلة.

إشعار

يضاعف نهج النسخ المتماثل النشط عدد العمليات، وبالتالي يمكن أن يؤدي هذا النهج إلى ارتفاع التكلفة.

النسخ المتماثل الخامل

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

يتلقى العميل رسائل من قائمتي الانتظار. نظرا لوجود فرصة أن يتلقى المتلقي نسختين من نفس الرسالة، يجب على المتلقي منع الرسائل المكررة. يمكنك منع التكرارات بنفس الطريقة الموضحة للنسخ المتماثل النشط.

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

عند استخدام النسخ المتماثل السلبي، في السيناريوهات التالية، يمكن فقدان الرسائل أو تلقيها مرتين:

  • تأخير الرسالة أو فقدها: افترض أن المرسل أرسل الرسالة m1 بنجاح إلى قائمة الانتظار الأساسية، ثم أصبحت قائمة الانتظار غير متاحة قبل أن يستقبل المستلم الرسالة m1. يرسل المرسل رسالة لاحقة m2 إلى قائمة الانتظار الثانوية. إذا كانت قائمة الانتظار الأساسية غير متاحة مؤقتاً، يستقبل المتلقي الرسالة m1 بعد أن تصبح قائمة الانتظار متاحة مرة أخرى. عندما تحدث كارثة، قد لا يتلقى المتلقي m1 أبدا.
  • الاستقبال المكرر: افترض أن المرسل يرسل الرسالة m إلى قائمة الانتظار الأساسية. عالج ناقل الخدمة الرسالة m بنجاح لكنه فشل في إرسال استجابة. بعد انتهاء مهلة عملية الإرسال، يُرسل المرسل نسخة متطابقة من الرسالة m إلى قائمة الانتظار الثانوية. إذا كان المتلقي قادراً على تلقي النسخة الأولى من الرسالة m قبل أن تصبح قائمة الانتظار الأساسية غير متوفرة، يتلقى المتلقي نسختين من الرسالة m في نفس الوقت تقريباً. إذا لم يتمكن المتلقي من تلقي النسخة الأولى من m قبل أن تصبح قائمة الانتظار الأساسية غير متوفرة، يتلقى المتلقي في البداية النسخة الثانية فقط من m، ولكنه يتلقى بعد ذلك نسخة ثانية من m عند توفر قائمة الانتظار الأساسية.

يوضح نموذج مهام النسخ المتماثل لمراسلة Azure مع .NET Core النسخ المتماثل للرسائل بين مساحات الأسماء.

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

لمعرفة المزيد حول التعافي من الكوارث، راجع المقالات التالية: