التحدي الهندسي:
أغلب المتاجر الإلكترونية تفشل عادة لاخلال التزامن Concurrency على مستوى المخزون —
عندما يضغط آلاف أو مئات الآلاف من المستخدمين "شراء" في نفس اللحظة، النظام التقليدي ينهار بسبب:
- تأخيرات في قواعد البيانات
- عمليات كتابة متضاربة
- فقد كفاءة الأداء تحت الحمل
المعنى: السيطرة على الحالة المشتركة تحت ضغط عالي ليست مجرد endpoint،
بل هي نظام متحكم في تدفق الطلبات والموارد.
الحل الهندسي:
1. Backpressure قبل كل شيء
بدون السماح للطلبات بالتراكم داخل الخادم، يتم التحكم في الحمل مبكرًا عند الحافة.
2. Atomic Stock عبر Redis
احتساب المخزون عبر عدّادات Redis
تفادي overselling وطرح السحب من DB بطيء
3. Event-Driven Workers
API يستقبل الطلب فقط إذا كان هناك سعة
Web workers تتولى المعالجة الثقيلة (إنشاء الطلب + الدفع + التخزين)
وتحديث الحالة يتم عبر SSE (Server-Sent Events) للعملاء
4. بنية موزعة واضحة
API خفيف + نظام FIFO + Redis Queue + Pub/Sub
) الأداء يصبح قابلًا للقياس والتحكم(
بعض الصور التوضيحية لقبل وبعد تحسين النظام:
أيضاً بعض المرفقات لإختبار الموقع تحت ضغط 100K req/s للشراء