مشاركة عبر


تكوين حجم مجموعة النسخ المتماثلة للخدمة ذات الحالة

يتم تكوين حجم مجموعة النسخ المتماثلة للخدمات ذات الحالة باستخدام معلمتين.

  • TargetReplicaSetSize - عدد النسخ المتماثلة التي يقوم النظام بإنشائها والاحتفاظ بها لكل مجموعة نسخ متماثلة من خدمة
  • MinReplicaSetSize - الحد الأدنى المسموح به من النسخ المتماثلة لكل مجموعة نسخ متماثلة من خدمة

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

على سبيل المثال، إذا كان TargetReplicaSetSize =5، MinReplicaSetSize =3، فعادة (بدون فشل) سيكون هناك خمس نسخ متماثلة في طريقة عرض Service Fabrics لمجموعة النسخ المتماثلة. عند حدوث حالات فشل، ستنخفض طريقة عرض Service Fabrics لمجموعة النسخ المتماثلة حتى تصل إلى MinReplicaSetSize.

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

هام

في المثال حيث TargetReplicaSetSize = 5، MinReplicaSetSize = 3، تكون الحصة التي تشكل الأغلبية MinReplicaSetSize هي 2. وهذا يعني أنه حتى إذا كانت هناك ثلاث حالات فشل متزامنة من شأنها أن تؤدي إلى تشغيل نسختين متماثلتين متبقيتين فقط، فستظل لدى Service Fabric 3 نسخ متماثلة في عرضها لمجموعة النسخ المتماثلة (اثنتين تعملان وواحدة معطلة)، وستكون نسختان متماثلتان متبقيتان قيد التشغيل كافيتين لتلبية الحصة التي تشكل أغلبية.

أمثلة على التكوينات دون المستوى الأمثل

TargetReplicaSetSize = 3; MinReplicaSetSize = 2

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

تظهر الصورة العقد في نظام المجموعة أثناء كل مرحلة تجاوز الفشل أثناء التسلسل أدناه عندما TargetReplicaSetSize = 3 وMinReplicaSetSize = 2

  1. يحتوي القسم على ثلاث نسخ متماثلة: A، وB، وC
  2. يتعطل الإصدار المتماثل A، ويتم تعيين النسخة المتماثلة لـ Service Fabric إلى 2 (B، وC)
  3. يحدث تجاوز الفشل غير المخطط له، كما تتعطل النسخة المتماثلة B - القسم الآن في حالة فقدان الحصة
  4. إذا عادت النسخة المتماثلة A، فسيظل القسم في حالة فقدان الحصة؛ لأن A لا يشكل جزءاً من مجموعة النسخ المتماثلة الحالية (B، وC). سيتم إصلاح فقدان الحصة فقط عندما تعود النسخة المتماثلة B إلى حالتها السابقة.

TargetReplicaSetSize = 3, MinReplicaSetSize = 3

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

تحذير

هذا النوع من التكوين لا يزال غير مثالي، فهو أفضل قليلاً من TagetReplicaSetSize =3، وMinReplicaSetSize = 2.

تظهر الصورة العقد في نظام المجموعة أثناء كل مرحلة تجاوز الفشل أثناء التسلسل أدناه عندما TargetReplicaSetSize = 3 وMinReplicaSetSize = 3

  1. يحتوي القسم على ثلاث نسخ متماثلة: A، وB، وC
  2. تتعطل النسخة المتماثلة A، وتظل مجموعة النسخ المتماثلة كما هي (A، وB، وC)
  3. يحدث تجاوز الفشل غير المخطط له، كما تتعطل النسخة المتماثلة B - القسم الآن في حالة فقدان الحصة
  4. بمجرد عودة أي من النسخ المتماثلة A أو B إلى حالتها السابقة، سيستعيد القسم الحصة لأن كلاً من A وB تشكل جزءاً من مجموعة النسخ المتماثلة الحالية

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