Queues وStreams والمعالجة غير المتزامنة
في هذا الدرس نتعلّم كيف يتعامل النظام مع العمل الثقيل دون أن يترك المستخدم في انتظار. الفكرة: بدلاً من القيام بكل شيء الآن، تضع المهمة في queue وتعالجها في الخلفية. نتعرّف على queues (طابور انتظار من المهام، تماماً مثل الطابور في مكتب البريد: كل طلب يحصل على رقم وينتظر دوره)، وعلى streams (نهر متواص
System Design (التخطيط لكيفية بناء برمجيات كبيرة تخدم أشخاصاً كُثُر) يشبه تخطيط مدينة: طرق، ومخازن، وإشارات مرور، وفرق صيانة، بحيث تستمر المدينة في العمل جيداً حتى في أكثر ساعات الذروة ازدحاماً.
- المعالجة غير المتزامنة
- معالجة العمل في الخلفية بدلاً من جعل المستخدم ينتظر (غير متزامن — “ليس في الوقت نفسه”، أي أنك لست مضطراً لإنهاء كل شيء قبل الاستجابة). المهارة الأساسية في هذا الدرس تشمل queues (طابور انتظار من المهام)، وstreams (تدفّق متواصل من الرسائل)، وretries (المحاولة من جديد عند الفشل)، وidempotency (بحيث لا تُحدث رسالة عولجت مرتين أي ضرر)، وbackpressure (تباطؤ متحكَّم فيه عندما يصل عمل أكثر من اللازم).
- Trade-off
- اختيار واعٍ ينطوي على ربح وتكلفة في آنٍ واحد — تماماً مثل اختيار مسار: الطريق السريع يكلّف رسم مرور، والمجاني يستغرق وقتاً أطول. في المقابلة تشرح للمُقابِل الربح والتكلفة لكل اختيار.
- مقياس تشغيلي
- رقم يُظهر ما إذا كان القرار يعمل فعلاً عندما يكون النظام حياً ويخدم مستخدمين حقيقيين (production). على سبيل المثال: latency (كم من الوقت تستغرق الاستجابة)، وerror rate (نسبة الطلبات التي تفشل)، وqueue lag (كم مهمة تنتظر في الطابور)، وcache hit ratio (كم مرة وجدنا إجابة جاهزة مسبقاً). مثل عدادات لوحة القيادة في السيارة — تخبرك ما إذا كان كل شيء على ما يُرام.