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

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

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

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

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

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

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

اختبار

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

خذ الاختبار