التصميم لتوسيع النطاق

تصميم التطبيق بحيث يمكن تغيير حجمه أفقياً

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

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

التوصيات

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

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

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

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

تجنب التواصل والتنسيق والانتظار بلا داع.

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

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

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

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

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

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

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

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