النمط المضاد للجار المزعج

Azure

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

وصف المشكلة

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

ضع في اعتبارك مثالاً لنظام متعدد المستأجرين مع مستأجرين اثنين. تتزامن أنماط استخدام المستأجر A وأنماط استخدام المستأجر B. في أوقات الذروة، يستخدم المستأجر A جميع موارد النظام، ما يعني أن أي طلبات يقدمها المستأجر B تفشل. بمعنى آخر، إجمالي استخدام الموارد أعلى من سعة النظام:

رسم توضيحي يوضح استخدام الموارد لمستأجرين. يستهلك المستأجر أ المجموعة الكاملة من موارد النظام، ما يعني أن المستأجر B يواجه حالات فشل.

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

تحدث مشكلة «الجار المزعج» أيضاً حتى عندما يستهلك كل مستأجر فردي كميات صغيرة نسبياً من سعة النظام، ولكن الاستخدام الجماعي للموارد للعديد من المستأجرين يؤدي إلى ذروة في الاستخدام الإجمالي:

الشكل مع 3 مستأجرين، يستهلك كل منهم أقل من الحد الأقصى لمعدل نقل الحل. في المجموع، يستهلك المستأجرون الثلاثة موارد النظام الكاملة.

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

كيفية حل المشكلة

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

الإجراءات التي يمكن للعملاء اتخاذها

الإجراءات التي يمكن لموفري الخدمات اتخاذها

  • مراقبة استخدام الموارد لنظامك. مراقبة كل من استخدام الموارد الإجمالي والموارد التي يستخدمها كل مستأجر. قم بتكوين التنبيهات للكشف عن الارتفاعات الحادة في استخدام الموارد، وإذا أمكن، قم بتكوين التشغيل التلقائي للتخفيف تلقائيا من المشكلات المعروفة عن طريق التوسع أو التوسيع.
  • تطبيق إدارة الموارد. ضع في اعتبارك تطبيق النهج التي تتجنب قيام مستأجر واحد بغمر النظام وتقليل السعة المتاحة للآخرين. قد تتخذ هذه الخطوة شكل فرض الحصة النسبية، من خلال نمط التقييد أو نمط تحديد المعدل.
  • توفير المزيد من البنية الأساسية. قد تتضمن هذه العملية زيادة الحجم عن طريق ترقية بعض مكونات الحل، أو قد تتضمن توسيع نطاقها عن طريق توفير أجزاء إضافية، إذا كنت تتبع نمط التقسيم، أو الخوادم المخصصة، إذا كنت تتبع نمط الخوادم المخصصة للتوزيع.
  • تمكين المستأجرين من شراء سعة مسبقة التوفير أو المحجوزة. توفر هذه السعة للمستأجرين المزيد من اليقين بأن الحل الخاص بك يتعامل بشكل كاف مع حمل العمل الخاص بهم.
  • تسهيل استخدام موارد المستأجرين. على سبيل المثال، قد تجرب إحدى الطرق التالية:
    • إذا كنت تستضيف مثيلات متعددة من الحل الخاص بك، ففكر في إعادة التوازن للمستأجرين عبر المثيلات أو الخوادم المخصصة. على سبيل المثال، ضع في اعتبارك وضع المستأجرين بأنماط استخدام يمكن التنبؤ بها وما شابهها عبر طوابع متعددة، لتسوية الذروات في استخدامهم.
    • ضع في اعتبارك ما إذا كان لديك عمليات خلفية أو أحمال عمل كثيفة الموارد غير حساسة للوقت. قم بتشغيل أحمال العمل هذه بشكل غير متزامن في أوقات الذروة، للحفاظ على سعة موارد الذروة لأحمال العمل الحساسة للوقت.
  • تحقق مما إذا كانت خدمات انتقال البيانات من الخادم توفر عناصر تحكم للتخفيف من مشاكل الجوار المزعجة. على سبيل المثال، عند استخدام Kubernetes، ضع في اعتبارك استخدام حدود الجراب، وعند استخدام Service Fabric، ضع في اعتبارك استخدام إمكانات الحوكمة المضمنة.
  • تقييد العمليات التي يمكن للمستأجرين تنفيذها. على سبيل المثال، تقييد المستأجرين من تنفيذ العمليات التي ستقوم بتشغيل استعلامات قاعدة بيانات كبيرة جدا، مثل تحديد الحد الأقصى لعدد السجلات القابلة للإرجاع أو حد الوقت للاستعلامات. يخفف هذا الإجراء من مخاطر قيام المستأجرين باتخاذ إجراءات قد تؤثر سلبا على المستأجرين الآخرين.
  • توفير نظام جودة الخدمة (QoS). عند تطبيق QoS، فإنك تعطي الأولوية لبعض العمليات أو أحمال العمل قبل العمليات الأخرى. من خلال وضع جودة الخدمة في التصميم والبنية الخاصة بك، يمكنك التأكد من أن العمليات ذات الأولوية العالية لها الأسبقية عند وجود ضغط على مواردك.

الاعتبارات

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

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

إشعار

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

كيف تكتشف المشكلة

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

من منظور الخدمة، قد تظهر مشكلة الجوار المزعجة بعدة طرق:

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

المساهمون

تحتفظ Microsoft بهذه المقالة. وهي مكتوبة في الأصل من قبل المساهمين التاليين.

الكاتب الرئيسي:

مساهمون آخرون:

لمشاهدة ملفات تعريف LinkedIn غير العامة، سجل الدخول إلى LinkedIn.