هندسة متعددة الخوادم: فصل المهام

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

المشكلة: قيود الخادم الأحادي (Monolithic)

تشغيل كل شيء على خادم واحد يسبب:

  • التنافس على الموارد: يتنافس خادم الويب مع خدمة البحث على وحدة المعالجة المركزية/الذاكرة

  • صعوبة التوسع: لا يمكن توسيع المكونات بشكل مستقل

  • نقطة فشل واحدة: تعطل خادم واحد = تعطل النظام بأكمله

  • عدم كفاءة التكلفة: لا يمكن تحسين أنواع المثيلات حسب عبء العمل

  • مخاطر النشر: نشر مكون واحد يؤثر على جميع المكونات الأخرى

نحتاج إلى فصل المهام عبر خوادم متعددة.

الحل: أدوار الخوادم المتخصصة

نشغل خوادم متخصصة، كل منها مُحسَّن لعبء العمل الخاص به:

graph TB
    subgraph prod[خادم نظام تخطيط موارد المؤسسات (ERP) للإنتاج]
        erp[نظام الإدارة الداخلية
الموارد البشرية، المالية، التصنيع
تشغيل 24/7
التخزين والبريد المشتركين] end subgraph web[خادم الموقع العام] www[الموقع العام
كتالوج المنتجات، المدونة
تشغيل 24/7
خلف شبكة توصيل المحتوى] end subgraph dev[خادم التطوير/الاختبار] devenv[التطوير والاختبار
حملات البريد الإلكتروني
يُطفأ في الليالي وعطلات نهاية الأسبوع] end subgraph search[خادم خدمة البحث] searchsvc[بحث المتجهات
استخراج الفلاتر
عمليات البحث ذات الصلة
تشغيل 24/7] end subgraph cache[خادم التخزين المؤقت - Valkey] valkey[فهارس RediSearch
تضمينات الاستعلام
الإكمال التلقائي
تشغيل 24/7] end www --> searchsvc searchsvc --> valkey

لماذا خوادم منفصلة؟

1. عزل الموارد

كل خادم يشغل نوعًا واحدًا من عبء العمل:

خادم الويب: مُحسَّن لمعالجة طلبات HTTP

  • نطاق ترددي عالي للشبكة

  • وحدة معالجة مركزية متوسطة

  • ذاكرة متوسطة

  • قرص سريع للتخزين المؤقت

خدمة البحث: مُحسَّنة لعمليات المتجهات

  • وحدة معالجة مركزية عالية (تشابه جيب التمام)

  • ذاكرة عالية (تخزين مؤقت للتضمينات)

  • مدخلات/مخرجات منخفضة للقرص

خادم التخزين المؤقت: مُحسَّن للوصول إلى الذاكرة

  • ذاكرة عالية جدًا

  • وحدة معالجة مركزية منخفضة

  • شبكة سريعة

الفائدة: لا يوجد تنافس على الموارد بين أعباء العمل.

2. التوسع المستقل

يمكننا توسيع كل مكون بشكل مستقل:

  • حركة مرور عالية؟ أضف المزيد من خوادم الويب خلف موزع الحمل.

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

  • فشل في التخزين المؤقت؟ زد ذاكرة خادم التخزين المؤقت.

  • الفائدة: قم بتوسيع ما يحتاج إلى التوسع فقط، وليس كل شيء.

3. عزل الأعطال

يتم احتواء الأعطال:

تعطلت خدمة البحث؟ لا يزال الموقع يخدم النتائج المخزنة مؤقتًا.

تعطل خادم التخزين المؤقت؟ تقوم خدمة البحث بالحساب دون التخزين المؤقت (أبطأ ولكنها تعمل).

تعطل خادم الويب؟ نظام تخطيط موارد المؤسسات الداخلي غير متأثر.

الفائدة: لا تنتقل الأعطال الجزئية إلى النظام بأكمله.

4. أمان النشر

ننشر من خلال بيئات:

التطوير → اختبر التغييرات باستخدام أدوات التصحيح

الاختبار → اختبر في بيئة مشابهة للإنتاج

الإنتاج → انشر بثقة

الفائدة: اكتشف المشكلات قبل أن تصل إلى المستخدمين.

5. تحسين التكلفة

نحسن التكاليف لكل خادم:

  • خادم التطوير: يُطفأ في الليالي وعطلات نهاية الأسبوع (تخفيض 50% في التكلفة)

  • خوادم IPv6 فقط: لا توجد تكاليف لعنوان IP مرن (توفير 5 دولارات شهريًا لكل مثيل)

  • مثيلات بالحجم المناسب: ادفع فقط مقابل الموارد المطلوبة لكل عبء عمل

  • الفائدة: تكاليف بنية تحتية أقل دون التضحية بالأداء.

تدفق البيانات بين الخوادم

فهم كيفية تدفق البيانات يساعد في شرح سبب أهمية الفصل:

تدفق طلب المستخدم

طلب صفحة منتج:

sequenceDiagram
    participant User
    participant CDN
    participant Web as خادم الويب
    participant Search as خدمة البحث
    participant Cache as خادم التخزين المؤقت
    
    User->>CDN: طلب صفحة منتج
    CDN->>CDN: فحص التخزين المؤقت
    alt إصابة التخزين المؤقت
        CDN->>User: تقديم الصفحة المخزنة مؤقتًا
    else فشل التخزين المؤقت
        CDN->>Web: توجيه الطلب
        Web->>Search: الحصول على المنتجات ذات الصلة
        Search->>Cache: استعلام عن التضمينات
        Cache->>Search: إرجاع النتائج
        Search->>Web: المنتجات ذات الصلة
        Web->>CDN: الصفحة المُصََّرَة
        CDN->>CDN: تخزين الاستجابة مؤقتًا
        CDN->>User: تقديم الصفحة
    end

تدفق استعلام البحث:

sequenceDiagram
    participant User
    participant Web as خادم الويب
    participant Search as خدمة البحث
    participant Cache as خادم التخزين المؤقت
    
    User->>Web: إرسال استعلام بحث
    Web->>Search: توجيه الاستعلام
    Search->>Search: استخراج الفلاتر
    Search->>Search: حساب التضمين
    Search->>Cache: بحث متجهي
    Cache->>Search: نتائج مصنفة
    Search->>Web: تطابقات المنتجات
    Web->>User: عرض النتائج

الفائدة: كل خادم يقوم بما هو مُحسَّن له.

استراتيجية التخزين لكل خادم

تستخدم الخوادم المختلفة استراتيجيات تخزين مختلفة:

خادم الويب

الملفات الثابتة المدعومة بـ S3: الصور، CSS، JS يتم تقديمها من S3

  • توافر عالٍ

  • لا استخدام للقرص المحلي

  • متوافق مع شبكات توصيل المحتوى

التخزين المؤقت المحلي: Nginx يخزن الصفحات المُصََّرَة مؤقتًا

  • وصول سريع متكرر

  • إبطال تلقائي

خدمة البحث

مصفوفات NumPy: تخزين تضمينات المنتجات كمصفوفات ثنائية

  • عمليات متجهات سريعة

  • تعيين للذاكرة للكفاءة

  • 65 ألف منتج × 768 بُعدًا = ~190 ميجابايت

ملفات JSON: تعيينات الفلاتر، جداول العبارات

  • قابلة للقراءة البشرية

  • سهلة التحديث

  • حجم صغير (<10 ميجابايت)

خادم التخزين المؤقت

Valkey (Redis): تضمينات الاستعلام، الاستعلامات الشائعة، الإكمال التلقائي

  • في الذاكرة للسرعة

  • RediSearch لفهارس المتجهات

  • الثبات للمتانة

لماذا تخزين مختلف؟

  • NumPy: مُحسَّنة للرياضيات المتجهية (تشابه جيب التمام)

  • JSON: مُحسَّنة للتحرير البشري (قواعد الفلاتر)

  • Valkey: مُحسَّنة للبحث عن القيمة المفتاحية (تخزين مؤقت للاستعلام)

هندسة شبكة توصيل المحتوى (CDN)

يقع الموقع العام خلف شبكة توصيل المحتوى:

ما الذي يتم تخزينه مؤقتًا

الأصول الثابتة (عمر تخزين مؤقت طويل):

  • الصور، CSS، JavaScript

  • الخطوط، الأيقونات

  • مخزنة مؤقتًا لمدة سنة

صفحات المنتجات (عمر تخزين مؤقت متوسط):

  • أوصاف المنتجات

  • المواصفات

  • مخزنة مؤقتًا لمدة ساعة

صفحات الاستعلام (عمر تخزين مؤقت قصير):

  • نتائج البحث

  • تركيبات الفلاتر

  • مخزنة مؤقتًا لمدة 5 دقائق

غير مخزنة مؤقتًا:

  • المحتوى الخاص بالمستخدم

  • نقاط نهاية API

  • البحث الديناميكي

لماذا شبكة توصيل المحتوى مهمة

  • زمن الانتقال العالمي: المواقع الطرفية تخدم المحتوى أقرب إلى المستخدمين

  • حماية الخادم الأصلي: تمتص شبكة توصيل المحتوى ذروات حركة المرور، تحمي الخادم الأصلي

  • تخفيف هجمات الحرمان من الخدمة الموزع: تقوم شبكة توصيل المحتوى بتصفية حركة المرور الخبيثة قبل وصولها إلى الخادم الأصلي

  • تقليل التكلفة: طلبات أقل على الخادم الأصلي = تكاليف حوسبة أقل

خط أنابيب النشر

ننشر من خلال بيئات لاكتشاف المشكلات مبكرًا:

بيئة التطوير

الغرض: تكرار سريع باستخدام أدوات التصحيح الميزات:

  • إعادة تحميل تلقائية عند تغيير الكود

  • صفحات أخطاء مفصلة

  • شريط أدوات التصحيح

  • لا يوجد تخزين مؤقت

الفائدة: حلقة ملاحظات سريعة للمطورين.

بيئة الاختبار

الغرض: اختبار مشابه للإنتاج الميزات:

  • نفس تكوين الإنتاج

  • نفس إعداد الخادم (Gunicorn، Nginx)

  • نفس سلوك التخزين المؤقت

  • معزولة عن بيانات الإنتاج

الفائدة: اكتشاف المشكلات الخاصة بالإنتاج قبل النشر.

بيئة الإنتاج

الغرض: خدمة المستخدمين الحقيقيين الميزات:

  • مُحسَّنة للأداء

  • تمكين التخزين المؤقت الكامل

  • المراقبة والتنبيه

  • إعادة تشغيل تلقائية عند التعطل

الفائدة: خدمة مستقرة وموثوقة.

المراجع

المفاهيم التقنية

خدمات AWS

  • CloudFront - وثائق شبكة توصيل المحتوى لـ AWS

  • S3 - وثائق تخزين الكائنات لـ AWS

  • DynamoDB - وثائق قاعدة البيانات NoSQL لـ AWS

مقالات ذات صلة

الملخص

تقوم هندسة الخوادم المتعددة لدينا بفصل المهام عبر خوادم متخصصة:

خادم نظام تخطيط موارد المؤسسات للإنتاج:

  • نظام الإدارة الداخلية

  • تشغيل 24/7

  • التخزين والبريد المشتركين

خادم الموقع العام:

  • الموقع الموجه للعميل

  • تشغيل 24/7

  • خلف شبكة توصيل المحتوى مع ملفات ثابتة مدعومة بـ S3

خادم التطوير/الاختبار:

  • بيئات اختبار آمنة

  • معالجة حملات البريد الإلكتروني

  • مُحسَّن التكلفة (يُطفأ في الليالي وعطلات نهاية الأسبوع)

خادم خدمة البحث:

  • بحث تشابه المتجهات

  • استخراج الفلاتر

  • تضمينات مدعومة بـ NumPy

خادم التخزين المؤقت (Valkey):

  • تخزين مؤقت لتضمينات الاستعلام

  • فهارس متجهات RediSearch

  • ترتيب الاستعلامات الشائعة

الفوائد الرئيسية:

  • عزل الموارد: لا تنافس بين أعباء العمل

  • توسع مستقل: قم بتوسيع ما يحتاج إلى التوسع فقط

  • عزل الأعطال: لا تنتقل الأعطال بشكل متسلسل

  • أمان النشر: اختبر قبل الإنتاج

  • تحسين التكلفة: مثيلات بالحجم المناسب، جداول طاقة

  • الأداء: تخزين مؤقت عبر شبكة توصيل المحتوى، استراتيجيات تخزين متخصصة

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


← العودة إلى فهرس الوثائق