سؤال

يوم سعيد،

كنت أقرأ هذا البند تحديد الكمية في كتاب "97 شيئًا يجب أن يعرفها كل مهندس برمجيات" (رابط أمازون معقم) وقد جعلني أتساءل عن كيفية قياس قابلية التوسع.

لقد قمت بتصميم نظامين لإحدى شركات البث البريطانية الكبرى يستخدمان في:

  1. اكتشاف البلد الأصلي لطلبات HTTP الواردة، أو
  2. تحديد تنسيقات الفيديو المناسبة لهندسة شاشة الهاتف المحمول ونوع الاتصال الحالي.

كان كلا التصميمين مطلوبين لتوفير قابلية التوسع.

تصميماتي لكلا النظامين قابلة للتطوير أفقيًا خلف طبقات موازنة التحميل للتخزين المؤقت والتي تُستخدم للتعامل مع الطلبات الواردة لكلتا الخدمتين وتوزيعها عبر العديد من الخوادم التي تقدم الخدمة نفسها بالفعل.يتم إجراء الزيادات الأولية في سعة الخدمة عن طريق إضافة المزيد من الخوادم خلف طبقة توازن التحميل، ومن هنا جاء مصطلح قابلية التوسع الأفقي.

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

إذن، هل من الممكن قياس قابلية التوسع؟هل سيكون تقديرًا لعدد الخوادم الإضافية التي يمكنك إضافتها لتوسيع نطاق الحل أفقيًا؟

هل كانت مفيدة؟

المحلول

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

يمكنك أيضا إعطاء أرقام داخل نطاق التطبيق - دعنا نقول أن النظام يدعم التعليق، يمكنك تحديد ما هو ترتيب حجم عدد التعليقات التي يجب أن تكون قادرا على تخزينها.

ومع ذلك، فإن الأمر يستحق مراعاة أنه ليس كل ما يمكن قياس كل ما يهم، وليس كل ما يمكن قياسه بالمسائل. :-)

نصائح أخرى

أعتقد أن هذا يرجع إلى ما تعنيه قابلية التوسع في سياق معين وبالتالي ستكون الإجابة هذا يعتمد.

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

لقد رأيت أيضًا قابلية التوسع المستخدمة لوصف التوسع المحتمل لمزيد من مراكز البيانات وخوادم الويب في مناطق مختلفة من العالم لتحسين الأداء.

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

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

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

  • الأداء - كم استجابة التطبيق يجب أن يكون للحصول على حمولة معينة
  • كم حجم تحميل يمكن أن ينمو التطبيق وفي أي تكلفة الوحدة (إذا كان لكل خادم البرنامج، والدعم، وما إلى ذلك)
  • ما مدى سرعة توسيع نطاق التطبيق لأعلى وكم المخزن المؤقت الذي تريده عبر استخدام فترة الذروة (يمكننا إضافة المزيد من عرض النطاق الترددي بنسبة 50٪ في 2-3 ساعات وتتطلب المخزن المؤقت بنسبة 30٪ على استخدام الذروة المخططة)

التكرار هو شيء آخر، ولكن يجب أيضا إدراجها ونظر فيها.

"يجب أن يكون النظام مقياسا للحفاظ على علاقة خطية ب X للحصول على التكلفة / المستخدم".

هنا طريقة واحدة:

"افترض أن معالج واحد يمكنه معالجة 100 وحدة من العمل في الثانية ..."

من http://www.information-management.com/issues/19971101/972-1.html.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top