تُرجِمت هذه الدروس تلقائيًا إلى العربية ولم تخضع بعد لمراجعة بشرية. إذا بدت أي صياغة غريبة، فالنسخة الإنجليزية هي المرجع.
يتم تجميع كل تطبيق واسع النطاق من نفس العناصر الأساسية. لا يتوقع القائمون على إجراء المقابلات منك أن تخترع تقنية جديدة - بل يريدون رؤيتك تختار وتجمع المكونات المناسبة لمشكلة معينة. يغطي هذا الدرس مجموعة الأدوات التي ستستخدمها في كل مقابلة تصميم.
يتبع الويب في جوهره نموذجًا بسيطًا: العملاء يرسلون الطلبات، والخوادم تعالجها، وتتدفق الاستجابات مرة أخرى. لكن الأنظمة الحديثة تضيف طبقات بين هاتين النقطتين للتعامل مع الحجم والموثوقية والأداء.
قد يجتاز الطلب النموذجي: العميل → CDN → موازن التحميل → بوابة API → خادم التطبيق → ذاكرة التخزين المؤقت → قاعدة البيانات. تحل كل طبقة مشكلة معينة، وفهم متى تكون هناك حاجة إلى كل طبقة يفرق بين المرشحين الأقوياء والمرشحين العاديين.
في المقابلات، ابدأ دائمًا برسم مخطط تدفق العميل والخادم عالي المستوى قبل الغوص في التفاصيل. ويظهر التفكير المنظم.
خادم واحد لديه قدرة محدودة. تقوم موازنات التحميل بتوزيع الطلبات الواردة عبر خوادم متعددة باستخدام إستراتيجيات مثل:
تقوم موازنات التحميل أيضًا بإجراء فحوصات السلامة، مما يؤدي تلقائيًا إلى إزالة الخوادم غير السليمة من المجموعة. في البيئات السحابية، تتعامل خدمات مثل AWS ALB أو Azure Front Door مع هذا الأمر بشفافية.
تتلقى خدمة موجز الوسائط الاجتماعية قراءات أكثر بـ 10 مرات من الكتابة. ما هو أسلوب موازنة التحميل الأفضل الذي يضمن للمستخدمين الوصول باستمرار إلى نفس خادم التخزين المؤقت الدافئ؟
تقوم مخازن التخزين المؤقت بالوصول إلى البيانات بشكل متكرر بالقرب من المستهلك. وهي موجودة على مستويات متعددة:
| طبقة | مثال | الكمون | |-------|---------|---------| | ذاكرة التخزين المؤقت للمتصفح | الأصول الثابتة واستجابات واجهة برمجة التطبيقات | ~0 مللي ثانية | | CDN | الصور، ملفات CSS، JS | ~10-50 مللي ثانية | | ذاكرة التخزين المؤقت للتطبيق | ريديس، ممكاشد | ~1-5 مللي ثانية | | ذاكرة التخزين المؤقت لقاعدة البيانات | ذاكرة التخزين المؤقت لنتيجة الاستعلام | ~5-10 مللي ثانية |
سجّل الدخول للانضمام إلى النقاش
يعد إبطال ذاكرة التخزين المؤقت أحد أصعب المشكلات في مجال الحوسبة. تتضمن الاستراتيجيات الشائعة TTL (مدة البقاء) والكتابة (تحديث ذاكرة التخزين المؤقت عند كل عملية كتابة) وذاكرة التخزين المؤقت جانبًا (يدير التطبيق ذاكرة التخزين المؤقت بشكل صريح).
مقولة فيل كارلتون الشهيرة - "هناك شيئان صعبان فقط في علوم الكمبيوتر: إبطال ذاكرة التخزين المؤقت وتسمية الأشياء" - يتم الاستشهاد بها على نطاق واسع لدرجة أنها عمليًا طقوس المرور في مقابلات تصميم النظام.
يعد اختيار قاعدة البيانات الصحيحة أحد قرارات التصميم الأكثر تأثيرًا:
قواعد بيانات SQL (PostgreSQL وMySQL) توفر معاملات ACID واتساقًا قويًا ومخططات منظمة. إنها تتفوق عندما تكون للبيانات علاقات واضحة وتحتاج إلى استعلامات معقدة ذات صلات.
قواعد بيانات NoSQL تأتي بعدة أشكال:
أنت تصمم نظامًا يخزن ملفات تعريف المستخدمين ببيانات شبه منظمة تتغير بشكل متكرر (حقول مختلفة لكل نوع مستخدم). ما هو نوع قاعدة البيانات الأكثر ملائمة؟
ليست كل عملية تحتاج إلى استجابة فورية. تعمل قوائم انتظار الرسائل (RabbitMQ، وApache Kafka، وAWS SQS) على فصل المنتجين عن المستهلكين، مما يتيح:
يستحق كافكا إشارة خاصة: فهو ليس مجرد قائمة انتظار ولكنه سجل أحداث موزع، مما يتيح تصميمات تعتمد على الأحداث حيث يمكن للعديد من المستهلكين معالجة نفس تدفق الأحداث بشكل مستقل.
| الجانب | متراصة | الخدمات المصغرة | |--------|----------|---------------| | النشر | وحدة واحدة | خدمات مستقلة | | التحجيم | مقياس كل شيء معًا | نطاق الخدمات الفردية | | التعقيد | أسهل للبدء | النفقات التشغيلية | | البيانات | قاعدة بيانات مشتركة | قاعدة بيانات لكل خدمة |
ابدأ بوحدة متراصة، واستخرج الخدمات الصغيرة عند الحاجة. يقدّر معظم القائمين على المقابلات المرشحين الذين يعترفون بأن الخدمات الصغيرة تقدم تعقيدًا للنظام الموزع (فشل الشبكة، واتساق البيانات، وتنسيق النشر) ولا تكون دائمًا الخيار الصحيح.
لقد انتقلت Netflix بشكل مشهور من الخدمات المتجانسة إلى الخدمات الصغيرة على مدار عدة سنوات. لكن Shopify - الذي يتعامل مع المليارات من المعاملات - لا يزال يدير وحدة متراصة معيارية. ما هي العوامل التي قد تجعل أحد النهجين أفضل من الآخر بالنسبة لشركة معينة؟
تنص نظرية CAP على أن النظام الموزع يمكنه ضمان اثنتين فقط من ثلاث خصائص في وقت واحد:
نظرًا لأن أقسام الشبكة أمر لا مفر منه في الأنظمة الموزعة، فإن الاختيار الحقيقي هو بين CP (الاتساق على التوفر) و AP (التوافر على الاتساق).
أنت تقوم بتصميم نظام معاملات مصرفية حيث يمكن أن تتسبب الأرصدة غير الصحيحة في خسارة مالية. ما هي مقايضة CAP التي يجب أن تعطيها الأولوية؟
عندما تدخل إلى مقابلة تصميم النظام، اتبع هذا الهيكل:
فكر في النظام الذي تستخدمه يوميًا - Instagram أو Uber أو Spotify. هل يمكنك تحديد العناصر الأساسية التي من المحتمل أن يستخدمها هذا الدرس؟ أين سيجلس موازن التحميل؟ ما الذي سيتم تخزينه مؤقتًا؟ ما هو نوع قاعدة البيانات الذي يناسب نموذج البيانات الخاص به؟
الخطوة التالية: سنطبق هذه الأساسيات لتصميم أداة تقصير عناوين URL من البداية.