أساسيات تصميم الأنظمة

اللبنات الأساسية

4 دقيقة للقراءة

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

موزعات الحمل (Load Balancers)

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

النوعالطبقةكيف يعملحالة الاستخدام
L4 (النقل)TCP/UDPالتوجيه بالـ IP والمنفذإنتاجية عالية، توجيه بسيط
L7 (التطبيق)HTTPالتوجيه بالـ URL والرؤوس والكوكيزتوجيه قائم على المحتوى، إنهاء SSL

الخوارزميات: Round Robin، أقل اتصالات، تجزئة IP، Round Robin الموزون

التخزين المؤقت (Caching)

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

استراتيجيات التخزين المؤقت:

الاستراتيجيةكيف تعملالأفضل لـ
Cache-Asideالتطبيق يفحص الكاش أولاً، يحمّل من DB عند الفقدانعام، كثيف القراءة
Write-Throughالكتابة في الكاش و DB معًااتساق البيانات
Write-Backالكتابة في الكاش، كتابة غير متزامنة لـ DBكثيف الكتابة، خطر فقدان بيانات
Read-Throughالكاش يحمّل من DB بشفافيةالبساطة
نمط Cache-Aside:
1. التطبيق يفحص Redis → إصابة؟ أعد البيانات
2. فقدان؟ استعلم من قاعدة البيانات
3. خزّن النتيجة في Redis مع TTL
4. أعد البيانات للعميل

الكاش الشائع: Redis (الأكثر شيوعًا في المقابلات)، Memcached

نصيحة للمقابلات: اذكر دائمًا إبطال الكاش كتحدٍ. إنها من أصعب المشاكل في الأنظمة الموزعة.

قواعد البيانات

SQL مقابل NoSQL

الميزةSQL (PostgreSQL, MySQL)NoSQL (MongoDB, DynamoDB)
المخططثابت، منظممرن، بدون مخطط
التوسععمودي (ترقية)أفقي (توسعة)
الربط (Joins)دعم أصليمحدود أو يدوي
المعاملاتمتوافق مع ACIDاتساق نهائي (عادةً)
الأفضل لـاستعلامات معقدة، علاقاتإنتاجية عالية، بيانات مرنة

توسيع قواعد البيانات

النسخ (Replication): نسخ البيانات لخوادم متعددة

  • سيد-تابع: كاتب واحد، قارئون كثر
  • سيد-سيد: كتّاب متعددون (حل نزاعات معقد)

التجزئة (Sharding): تقسيم البيانات عبر قواعد بيانات متعددة

  • قائم على النطاق: معرّفات المستخدم 1-1M على القسم 1، 1M-2M على القسم 2
  • قائم على التجزئة: hash(user_id) % عدد_الأقسام
  • التجزئة المتسقة: تقلل إعادة التوزيع عند إضافة/إزالة أقسام

طوابير الرسائل (Message Queues)

فصل الخدمات عن طريق التواصل عبر طابور بدلاً من الاستدعاءات المباشرة.

النظامنقاط القوةحالة الاستخدام
Kafkaإنتاجية عالية، قائم على السجل، إعادة التشغيلبث الأحداث، السجلات
RabbitMQتوجيه مرن، إشعارات تأكيدطوابير المهام، RPC
SQSمُدار، بسيط، موثوقسير عمل AWS الأصلي

متى تستخدم: المعالجة غير المتزامنة، التعامل مع ذروة الحمل، فصل الخدمات، البنية القائمة على الأحداث.

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

تقديم المحتوى الثابت (الصور، CSS، JS) من خوادم قريبة جغرافيًا من المستخدمين.

  • Push CDN: ترفع المحتوى إلى CDN (جيد للمواقع الثابتة)
  • Pull CDN: CDN يجلب من المصدر عند أول طلب ثم يخزّن (جيد للمحتوى الديناميكي)

تصميم API

الأسلوبالشكلالأفضل لـ
RESTHTTP + JSONعمليات CRUD العامة، APIs بسيطة
GraphQLنقطة نهاية واحدة، لغة استعلاماحتياجات بيانات معقدة، تطبيقات الهاتف
gRPCProtocol Buffers, HTTP/2تواصل الخدمات المصغّرة، زمن منخفض

جدول مرجعي للبنات البناء

الحاجةالحل
توزيع حركة المرورموزع الحمل
تقليل زمن الاستجابةالكاش (Redis)
تخزين بيانات منظمةقاعدة بيانات SQL
تخزين بيانات غير منظمةقاعدة بيانات NoSQL
معالجة غير متزامنةطابور رسائل
تقديم محتوى ثابت عالميًاCDN
البحث النصيElasticsearch
معرّفات فريدة على نطاق واسعSnowflake ID / UUID

التالي: لنطبق هذه اللبنات على مسائل تصميم الأنظمة الكلاسيكية. :::

اختبار

اختبار الوحدة 4: أساسيات تصميم الأنظمة

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

ابقَ على مسار النيرد

بريد واحد أسبوعياً — دورات، مقالات معمّقة، أدوات، وتجارب ذكاء اصطناعي.

بدون إزعاج. إلغاء الاشتراك في أي وقت.