سؤال

لدي طباعة متوازنة تحميل مع أكثر من 10 خوادم الويب التي تعمل على تشغيل IIS. جميع مواقع الويب هي الوصول إلى تخزين ملف واحد يستضيف كل الصور. لدينا حاليا 200 جيجابايت من الصور - نقوم بتخزينها في الدلائل من 1000 صورة لكل دليل. في الوقت الحالي، توجد جميع الصور في جهاز تخزين واحد (RAID 10) متصل بخادم واحد يعمل بمثابة خادم الملفات. جميع خوادم الويب متصلة بخادم الملفات على نفس الشبكة المحلية. أنا أتطلع إلى تحسين الهندسة المعمارية بحيث لا نواجه نقطة فشل واحدة. أنا أفكر بديلين:

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

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

أحرز حاليا استخدام CDN حيث سيتطلب تغيير بنية في التطبيق الذي لا يمكننا تقديمه الآن.

لا يوجد حل صحيح

نصائح أخرى

أشياء معينة أود أنظر عادة قبل الذهاب لتغيير القوس

  1. ما هي قضايا القوس الحالي
  2. ماذا أفعل الخطأ في القوس الحالي. (إذا كان هذا يعمل لفترة من الوقت، فإن القرص الثانوي ستحل عادة الكثير من القضايا)
  3. هل سيتيح لي أن ينمو بسهولة (هنا سيكون هناك دائما حد أعلى). بناء على النمو الماضي للبيانات، يمكنك التخطيط لها بفعالية.
  4. الموثوقية
  5. من السهل الحفاظ / الشاشة / استكشاف الأخطاء وإصلاحها
  6. كلفة

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

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

هناك بعض مشروع - مغامرة حلول لهذا النوع من الأشياء. لكنني لا أشك في أنها باهظة الثمن. ناس لا مقياس جيدا. ولديك نقطة تفشل واحدة ليست جيدة.

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

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

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

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

قم بتشغيل RSYNC بين الحين والآخر (على سبيل المثال بعد أي تحميل أو مرة واحدة في الليل؛ ستعرف أفضل ما هي الأحجام التي تناسبك بشكل أفضل).

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

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