Jiss Tech

دراسة هندسية شخصية · بيانات الطيران

بناء نظام يعمل لحظيًا من ستة مصادر بيانات

FlightDetector منصة لتتبع الطيران وواجهة برمجة طورتها جيس تك. تجمع ستة مصادر لبيانات الطيران والمعلومات المرجعية وفق الأدوار الفعلية لكل منها، وتتحقق من المسارات المقترحة بمقارنتها بأدلة الرحلات المرصودة، وتعيد استخدام البيانات التاريخية المؤرشفة قبل إرسال طلب جديد إلى أي مزود.

٦ مصادر بيانات متحقق منهاالسجل التاريخي من الأرشيف أولًابدائل تراعي الميزانية

تحدي العمل أو المنتج

تجيب مصادر بيانات الطيران عن أسئلة مختلفة، وقد تختلف إجاباتها رغم ذلك.

قد تبدو بيانات الطيران موثوقة حتى نقارنها بغيرها. تعيد شركات الطيران استخدام أرقام الرحلات لعدة مقاطع في اليوم الواحد، وتحتفظ قواعد البيانات بلقطات مختلفة من الرحلة نفسها. وقد تتوقف المصادر دون إنذار، وتفرض قيودًا شديدة على الطلبات، وتحاسب على كل طلب. لا يجيب مزود واحد عن كل ما يحتاجه النظام من أسئلة تتعلق بالبيانات الحية والتاريخية والمسارات والمطارات والطائرات.

لكي نجعل ستة مصادر تعمل كمنصة واحدة موثوقة، اضطررنا إلى معالجة صورة مصغرة من كل المشكلات التي تعانيها تكاملات الأعمال: بيانات متعارضة، ومزودون يتعطلون، وتكاليف تتصاعد حين تغيب المراقبة.

نبذة عن المنتج

خمسة قرارات وراء مسار معالجة يراعي مصدر البيانات.

التحقق بالرجوع إلى الواقع المقاس

تُفحَص المسارات المرشحة بمقارنتها بأدلة الإقلاع والاتجاه المرصودة. لا يتقدم رقم رحلة مألوف على ما فعلته الطائرة المتتبعة فعلًا، وتُستبعَد المسارات التي تناقض الأدلة.

الرجوع إلى الأرشيف أولًا، ثم طلب API

تُحفَظ الإجابات التاريخية في SQLite، ويسجل فهرس التغطية الفترات الزمنية المؤرشفة بالفعل. وتعيد الأسئلة المتكررة استخدام البيانات المحلية بدل إرسال طلبات يمكن تجنبها إلى المزودين.

ميزانيات تُفرَض داخل قاعدة البيانات

تُراجَع عدادات الاستخدام المرتبطة بالشهر التقويمي قبل طلبات البدائل الخاضعة للميزانية. وتضمن الحدود القصوى الصارمة وضوابط إعادة المحاولة لكل رمز نداء أن يكون الانتقال إلى مزود آخر قرارًا مقصودًا وقابلًا للمراقبة.

الصدق عند تعذّر الوصول إلى إجابة

عندما تخالف جميع المصادر الأدلة المقاسة، يعرض FlightDetector عبارة «الوجهة غير معروفة» بدل إجابة خاطئة تُقدَّم بثقة. وأثبت هذا القرار صوابه حين أشار مسار مخزن إلى الشرق بينما كانت الطائرة تتجه غربًا.

بدائل تُختبَر قبل حدوث الانقطاع

عند تعطل المصدر الأساسي للمواقع المباشرة، يمكن الرجوع إلى OpenSky، بينما تملك مسارات البحث التاريخي وتحديد الرحلات بدائل مرتبة خاصة بها. لكل مصدر وظيفة محددة، دون افتراض أن جميع المزودين قابلون للاستبدال ببعضهم.

واجهة المنتج

حركة جوية مباشرة، وبيانات واضحة لحظة بلحظة.

خريطة FlightDetector المباشرة لتتبع مئات الطائرات في الغرب الأوسط الأمريكي
حركة جوية مباشرة: مئات الطائرات قيد التتبع لحظيًا
تتبع رحلة في FlightDetector بمسار متحقق منه ووقت وصول متوقع وبيانات الارتفاع
تتبع رحلة واحدة بمسار متحقق منه ووقت وصول متوقع وبيانات الارتفاع
بحث FlightDetector في الرحلات السابقة يعرض مسارًا من نيويورك إلى لندن عبر الأطلسي
بحث تاريخي: مسار من نيويورك إلى لندن عبر الأطلسي
خريطة أقمار صناعية في FlightDetector تعرض رحلة قيد التتبع والمسار الذي قطعته
خريطة أقمار صناعية تعرض رحلة متتبعة والمسار الذي قطعته

البنية التقنية المتحقق منها

مسار معالجة يراعي مصدر البيانات بدلًا من تدفق واحد يُفترض أنه المرجع الحاسم.

FlightDetector دراسة حالة لمشروع هندسي شخصي. تقدم واجهة API مبنية على Fastify البيانات لواجهة Mapbox تعمل بـ JavaScript دون إطار عمل، وتوحد صيغ ستة مصادر لبيانات الطيران والبيانات المرجعية وفق أدوارها الفعلية، وتتحقق من معلومات المسار بمقارنتها بأدلة الرحلة المرصودة، وتؤرشف الإجابات التاريخية المدفوعة في SQLite، ولا تلجأ إلى المصادر الأعلى تكلفة إلا عندما تعجز الأدلة الأقل تكلفة عن تحديد المسار.

جارٍ عرض البنية التقنية المتحقق منها…

التقنيات

التقنيات المستخدمة، دون حشو السيرة الذاتية.

ترتبط كل تقنية أدناه بالشيفرة المصدرية للمشروع التي خضعت للمراجعة، وليس بقائمة عامة لقدرات الشركة.

الواجهة الأمامية

HTMLCSSJavaScript دون إطار عملMapbox GL JS

الواجهة الخلفية

Node.jsوحدات JavaScript ESFastify 5Fastify CORS

البيانات وذاكرة التخزين المؤقت

node:sqliteSQLiteذاكرة التخزين المؤقت TTL في الذاكرةمؤشر التغطية

حية وتاريخية

adsb.lolOpenSky Networkمسارات الطيرانالنوافذ المؤرشفة

الإثراء والمرجع

adsbdbOurAirportsتوحيد صيغ بيانات المساراتبيانات هيكل الطائرة

مصادر بديلة بميزانية محددة

AirLabsAviationStackعدادات شهريةضوابط إعادة المحاولة

القيود

المتطلبات التي كان على النظام الالتزام بها

  • تُستخدم أرقام الرحلات مجددًا عبر مقاطع مختلفة، وتختلف بيانات المزودين، وقد تتعارض بيانات المسار الوصفية مع حركة الطائرة المرصودة.
  • بعض مقدمي الخدمة مجانيون، والبعض الآخر محدود الحصص، ولا ينبغي إعادة شراء الطلبات التاريخية عندما تكون الإجابة معروفة بالفعل.
  • يجب أن يظل النظام صادقًا عندما لا يستطيع أي مصدر تحديد وجهة بدلاً من اختراع اليقين.

الحل

القرارات الهندسية التي تلبي هذه القيود

  • استخدم Adsb.lol للمواضع المباشرة الأساسية وOpenSky كمصدر احتياطي وتاريخي مباشر.
  • أنشئ مسارات مرشحة من سلاسل مسارات Adsbdb وadsb.lol والمتغيرات ذات العلامات التجارية/المشغلين والمسارات المستفادة والملاحظات المؤرشفة.
  • التحقق من تغطية SQLite قبل طلب البيانات التاريخية، وحفظ الرحلات المجلوبة والفترات المغطاة لإعادة استخدامها.
  • لا يُلجأ إلى AirLabs وAviationStack إلا ضمن ميزانيات تُتابَع في قاعدة البيانات، مع إرجاع حالة صريحة بأن النتيجة غير معروفة إذا ظلت الأدلة غير كافية.

التحديات الهندسية

توحيد صيغ البيانات من مصادر مختلفة

تصل المواقع المباشرة والمسارات التاريخية وسجلات المسار والبيانات المرجعية للمطار والجدول الاحتياطي بأشكال مختلفة وتخدم أغراضًا مختلفة.

تأكد من المسار وليس العلامة التجارية

تُقارَن مقاطع الرحلة المرشحة بأدلة الإقلاع والاتجاه المقاسة، حتى لا يطغى رقم رحلة مألوف على ما فعلته الطائرة فعليًا.

استخدام الطلبات بحساب

تمنع تغطية الأرشيف والمسارات المستخلصة وعدادات الاستخدام الشهرية والحدود القصوى الصارمة ومدد صلاحية الذاكرة المؤقتة والضوابط الخاصة بكل رمز نداء الطلبات غير الضرورية إلى المزودين.

تكامل الأنظمة

أنظمة خارجية ذات وظائف محددة

  • adsb.lol للمواقع الحية الأساسية للطائرات وبيانات تسلسل المسارات.
  • OpenSky Network للمواقع البديلة ومسارات الطيران والرحلات التاريخية.
  • adsbdb لإثراء بيانات المسار وشركة الطيران والمطار وهيكل الطائرة.
  • OurAirports لرموز المطارات وأسمائها وبلدياتها وإحداثياتها.
  • AirLabs وAviationStack كوجهات احتياطية يتم التحكم فيها بالميزانية.
  • Mapbox GL JS لعرض الخرائط وتصور المسار؛ ولا يتم احتسابه كمصدر لبيانات الطيران.

الموثوقية والأمن

الضوابط الظاهرة في الشيفرة المصدرية

  • يطبق Fastify حدودًا لمعدل الطلبات لكل عنوان IP، ويوفر معلومات عن حالة المزودين والأرشيف.
  • طلبات المنبع لها مهلات محدودة، ويمكن أن ترجع حالات الفشل المباشرة الأساسية إلى OpenSky.
  • تحافظ عمليات الكتابة في الأرشيف على النتيجة نفسها عند تكرارها، وتمنع تغطية الفترات المجلوبة تكرار طلب البيانات التاريخية، وتحمي العدادات الشهرية وضوابط إعادة المحاولة استخدام المصادر البديلة المدفوعة.
  • ينتج عن أدلة الطريق المتناقضة أو المفقودة حالة واضحة غير معروفة للوجهة.

النتيجة

ما يوضحه التنفيذ الذي تم التحقق منه

النتيجة دراسة حالة هندسية شخصية لنظام يعمل فعليًا، توضح تكامل واجهات API مع مراعاة مصادر البيانات، والتحقق من المسارات، والرجوع إلى الأرشيف أولًا، وترتيب البدائل بوضوح، وضبط التكاليف. ولا تُقدَّم بوصفها مشروعًا لعميل أو نتيجة لاختبار معياري للأداء أو ادعاءً بوفر مالي مقاس.

الدروس المستفادة

  • المزيد من مقدمي الخدمات لا يخلقون الثقة بأنفسهم؛ قواعد المصدر والتحقق تفعل ذلك.
  • يعمل الأرشيف الدائم على تحويل إنفاق واجهة برمجة التطبيقات السابقة إلى بنية تحتية قابلة لإعادة الاستخدام.
  • تعد إرجاع المجهول ميزة موثوقية عندما تتعارض كل إجابة متاحة مع الأدلة المرصودة.

لماذا يهم هذا مشروعك

تجعل الأساليب نفسها تكاملات الأعمال هادئة ومتوقعة، بأفضل معنى لذلك.

التحقق بين المصادر، والاعتماد على الأرشيف أولًا، وفرض الميزانيات في قاعدة البيانات، وعرض حالات التعطل بصدق، واختبار البدائل مسبقًا: هذه هي الممارسات التي تجعل مزامنة أنظمة العملاء توفّق بين السجلات بدل تكرارها، وتحافظ على مسارات الإشعارات الآلية عند تعطل المزودين، وتُبقي التقارير جديرة بالثقة. وهذا هو الانضباط الذي تقوم عليه خدماتنا في تكامل واجهات البرمجة وتطويرها.

شرحنا الجوانب الهندسية بالتفصيل: ما تعلمناه من تطوير نظام لتتبع الرحلات عن واجهات API الخارجية و كيفية خفض تكاليف واجهات البرمجة: ست استراتيجيات يتراكم أثرها.

هل تختلف بياناتك من مصدر إلى آخر؟

أنظمة العملاء والفوترة وبيانات المزودين: إذا كانت أنظمتك تحتفظ بروايات مختلفة للواقع، فقد حللنا هذه المشكلة بالفعل في عالم الطيران.