سؤال

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

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

المحلول

إنني أنظر إلى قابلية التوسع من زاويتين:

زيادة

إذا أضفت المزيد من ذاكرة الوصول العشوائي (RAM) إلى الصندوق الذي يعمل عليه شيء ما، فما مقدار الأداء والسعة الإضافية التي سأكتسبها؟إذا كان أحد التطبيقات المتوفرة لدي يمكنه التعامل مع 300 اتصال إضافي ويعمل بشكل أسرع بنسبة 15% عندما أقوم بإضافة 2 جيجابايت من ذاكرة الوصول العشوائي إلى الخادم الخاص بي، ويمكن لتطبيق آخر التعامل مع 100 اتصال إضافي فقط ويعمل بشكل أسرع بنسبة 5%، فمن الواضح أن التطبيق أ أكثر قابلية للتوسع.

التدرج

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

هذا، بالمناسبة، هو أحد محركات الأقراص الأساسية للطبقة n.

نصائح أخرى

والتدرجية تعني القدرة على التعامل مع النمو في أي من هذه المجالات 2:

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

2) القدرة على التعامل مع أكبر وأكبر حمولة التي قد تكون طلبات متعددة في وقت واحد في الشبكة العالمية للتنمية أو مجموعات البيانات الكبيرة لموقع بسيط يحركها قاعدة البيانات، على سبيل المثال هل يمكن أن تجعل أحد التطبيقات التي تتعامل مع الجداول مع مئات الآلاف من الصفوف التي لا يزال ينظر إليها على أنها "سريعة"؟

وعموما بالنسبة لي قابلية تعني القدرة على النمو.

وأنا لا أعتقد قابلية يجعل ذرة من الشعور دون السياق.

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

و(OK، وبالتالي فإن الجواب على كل هذه الأسئلة هي عادة "نعم"، ثم إلحاقها كلمة "كيف" على هذه الأسئلة.)

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

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

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

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

.

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

وفقط لإضافة إلى آخرLou فرانكو.

وPLINQ لديه حتى عجيب "سوبر الخطي" الأداء في بعض الحالات مع النفقات العامة المحدود (وفقا لبعض العروض الخاصة بهم). جربه.

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

وأعتقد قابلية كمقياس لنعومة منحنى التكلفة والأداء.

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

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

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

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

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

وسيلة قابلة أستطيع أن الالزام ن الموارد في نظام وانها سوف تنمو في كل من المكان والزمان بين O (سجل (ن)) وO (ن سجل ن). هذا غير واقعي إلى حد ما، ولكن هذه هي الطريقة التي أفكر في "تحجيم".

وووه!، كلمة كبيرة ....

وأنا تحديده من جديد كل مشروع، لأنه يعتمد على ما يريده العميل.

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

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