تشريح حجز تاكسي في الوقت الفعلي
بنيت الواجهة الخلفية لنظام حجز تاكسي في تورونتو، وأكثر ما يمكن أن أقدّمه لك ليس الكود. إنها الصورة التي كنت أرسمها في كل مكالمة مع الفريق:
القرارات الثلاثة الأهم
WebSockets، لا polling. السائق يرسل موقعه كل 2 ثانية. عبر HTTP هذا يعني اتصالًا جديدًا وترويسات ومصادقة مع كل إشارة. عبر WebSocket واحد، الأمر لا يتعدّى إطارًا من 30 بايت. مع 200 سائق متصل في آنٍ واحد، هذا هو الفرق الحاسم.
الخادم يملك مهمة المطابقة فقط، لا أكثر. خادم التوزيع يقرّر أي سائق يأخذ المهمة، وينقل المواقع. هو لا يحمل المكالمة الصوتية.
الصوت ينتقل من نظير إلى نظير. WebRTC يحتاج الخادم مرة واحدة فقط، للمصافحة (رسائل تشبه السهمين 1 و2 لتبادل عناوين الشبكة). بعدها، الصوت يتدفّق من هاتف لهاتف. تكلفة نطاق ترددي صفرية على جانبك، وزمن استجابة أقل لهما.
المكوّنات لمن يريد التفاصيل: Laravel لواجهة الـAPI والمطابقة، WebSockets للقناة الحيّة، WebRTC للمكالمات، وطابور (انظر المقال الأول) للإيصالات والإشعارات.
ملاحظات القراء