مشكلة تصميم: مشترك، تزامن، الوصول إلى البيانات في تطبيق ... أفضل نهج؟

StackOverflow https://stackoverflow.com/questions/202751

سؤال

ولدي تطبيق ويب (asp.net) حيث يتم تقديم عناصر العمل وخصصت للمستخدمين وفقا لعبء العمل.

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

وأنا بحاجة إلى وسيلة لضمان أن يتم كل قرار تخصيص باستخدام صورة ما يصل إلى تاريخ العمل عبر قاعدة المستخدمين.

وفكرتي هي لتوفير القراءة / الكتابة مخزن متزامنة من المعلومات عبء العمل في ذاكرة التخزين المؤقت.

هل هذا هو النهج الأفضل؟ أو ينبغي أن استخدام قاعدة بيانات للسيطرة على قفل؟ كيف يمكنني تجنب زجاجة رقاب في طلبي؟

والمشورة محل تقدير كبير.

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

المحلول

وهذا يعتمد على عوامل كثيرة، عند الإشارة إلى ذاكرة التخزين المؤقت تقصد ذاكرة التخزين المؤقت القياسية التي تقدمها Asp.Net؟

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

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

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

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

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

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

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

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

سوف

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

نصائح أخرى

استخدم قاعدة بيانات للسيطرة على هذا.

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

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

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

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

وهكذا كنت أود أن يكون سلسلة من الجداول التي تتعلق بالعمل البنود، التي يمكنك الاستعلام لحساب مستويات العمل الحالية، وبالتالي تحديد الشخص التالي لتلقي عنصر عمل معين.

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

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

لتحقق هذا، هل يمكن كتابة بعض يسخر اختبار للتأكد من توزيع عناصر العمل، والأداء هو ما تريدها تحت الاستخدام عالية.

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