تصميم برنامج عميل / خادم، سؤال التصميم (.NET)

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

  •  13-09-2019
  •  | 
  •  

سؤال

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

سيتم تشغيل جانب الخادم من البرنامج كخدمة على عدد من خوادم Windows، تقوم الخدمة بمراقبة هذه الخوادم، عند الحاجة إلى خدمة البريد الإلكتروني إلينا تقريرا.

سيتم استخدام العميل للتحكم وإدارة الخدمات التي تعمل على الخوادم، ولكن لن تكون دائما قيد التشغيل.

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

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

ماذا كنت ستفعل؟ أي شيء يجب أن أكون على علم به؟

شكرا

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

المحلول

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

فقط رمي هذا في المناقشة.

نصائح أخرى

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

  • إذا قمت بتخزين الإعدادات في موقع مركزي - إما مشاركة ملف أو قاعدة بيانات - قمت بإنشاء نقطة تفشل واحدة في نظامك الموزع. سيكون الحل البديل هو تخزين الإعدادات في 2 أو أكثر من المواقع المركزية. ولكن، كيف يمكنك التأكد من أن المواقع 2 أو أكثر في المزامنة؟)

  • إذا قمت بتخزين الإعدادات مع كل خادم، فماذا فشل اتصال العميل / الخادم مع خادم واحد في الوقت الحالي عندما تحاول حفظ الإعدادات، أو ماذا لو لم يكن أحد الخوادم. الآن لديك موقف لا توافق فيه الخوادم حول ما هي الإعدادات. لذلك، مرة أخرى، كيف يمكنك التأكد من أن الخوادم المتعددة متزامنة؟

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

هناك عدد من الأشياء التي يجب مراعاتها هنا.

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

الآن أنت في مشكلة حيثما إذا تم تحديث المعلمات في قاعدة البيانات من خلال خادم واحد، يجب إبلاغ الخدمة / S الأخرى بالتحديث وتحتاج إلى إعادة التهيلية.

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

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