لشركة مثل Uber، يُمثّل البيانات الفورية دماء خدماتهم الموجهة للعملاء والخاصة بالشركة. يعتمد العملاء على البيانات الفورية للحصول على التوصيلات وأخذ الوجبات السريعة بمرونتهم. تعتمد الفرق الداخلية أيضًا على البيانات المحدثة لتشغيل البنية التحتية وراء تطبيقاتهم الموجهة للعملاء، مثل أداة الشركة الداخلية التي تراقب تحليلات تعطل التطبيق المحمول.
تمّ نقل Uber إلى Apache Pinot لتشغيل هذه الأداة الداخلية وشهدت تحسّنات كبيرة بالمقارنة مع محرك تحليلاتهم السابق (Elasticsearch). بالانتقال إلى Pinot، منصة تحليلات فورية حقيقية، رأت Uber منهجية المنتجات المتاحة، مثل:
- تخفيض 70% في تكلفة البنية التحتية (وهو توفير يزيد عن 2 مليون دولار سنويًا)
- تخفيض 80% في أزواج أزرار CPU
- تخفيض 66% في مساحة البيانات
- تخفيض 64% في مدة التحميل الصفحة (من 14 ثانية إلى أقل من 5 ثواني)
- تخفيض تأخير الاستيراد إلى أقل من 10 ميلي ثانية
- انخفاض في وقت انتهاء الطلب والقضاء على مشكلة فقدان البيانات
شاهد الآن
يعتمد محتوى هذه المدونة على اجتماع موجه شخصيًا تمت مناقشة فيه قصص مستخدمي Apache Pinot. نشير أيضًا إلى مدونة فريق الهندسة في Uber التي تغطي كيفية استخدامهم لـ Pinot لخدمة تحليلات فورية للتعطلات في التطبيقات المحمولة. شاهد الاجتماع من هنا:
أو استمر في القراءة لتعرف كيف حققت Uber هذه النتائج باستخدام Apache Pinot.
كيف تقدم Uber تحليلات فورية على تعطلات التطبيقات المحمولة
يمتلك أوبر خط إنتاج تلقائي لاستيعاب البيانات التي تتتبع انهيارات التطبيق وتجميع بيانات التحقيق. بعض هذه البيانات يتم استيعابها في أباتشي فلينك للتحولات، والتي يتم إعادتها إلى موجات كافكا للاستهلاك التدريجي. تتم ثمة استهلاك هذه الأحداث الأولية والمعالجة في كافكا بواسطة أباتشي بينوت، الذي يعمل بعد ذلك على استعلامات تحليلية تُسلّم نتائجها إلى المستخدمين الداخليين عبر جرافانا وأدوات التصور الداخلية. يستوعب خط الإنتاج لديهم إمّا بيانات فورية وإمّا خارجية (ليست موضحة) لخلق نظرة شاملة على المستخدمين، المعروفة بالجداول الهجينة في أباتشي بينوت.
تحليلات انهيار التطبيق الفورية باستخدام أباتشي بينوت
تصدر أوبر حوالى 11,000 تغيير جديد في الكود والبنية التحتية كل أسبوع، وهم يعتمدون على أداة داخلية (هيلثلاين) لمساعدتهم على الكشف عن وحل مشاكل الانهيار. يسمح لأوبر بتحسين قياسهم وتلبية متوسط وقت الكشف (MTTD). على سبيل المثال، قد يطلقون ميزة جديدة تسبب انهيارات غير متوقعة في التطبيق ويجب أن يكونوا قادرين بسرور على توجيه مصدر الانهيارات من خلال التعمق في بيانات الانهيار.
تظهر اللوحة التالية بيانات انهيار لمدة أسبوع لتطبيق محمول ونسخة واحدة من نظام التشغيل. في هذا المثال، تحدث أحداث الجلسة بحد أقصى لمئات الآلاف من المرات في الثانية، ويتراوح عدد الانهيارات بين 15,000 إلى 20,000 حدث في الثانية. يقوم أوبر بجمع هذه المقاييس لحساب معدل الحرج الحرج الذي يشير إلى صحة التطبيق (الهدف هو أن يكون أقرب ما يمكن إلى 100%).
مع Elasticsearch، وهو محرك بحث شامل، يسبب ارتفاع معدلات الأعطال تأخرًا في الاستيعاب وتأخير في الاستجابة الفريق لتحديد المشكلات. بالانتقال إلى Apache Pinot، الذي صمم خصيصًا للتحليلات الفورية على نطاق هائل، شهد الفريق انخفاضًا في عدد وشدة التأخيرات في الاستيعاب.
تحليل بعمق بيانات الأعطال
بالإضافة إلى المعلومات الإحصائية على مستوى البيانات العامة للأعطال، يقدم Uber تحليلات دقيقة على مستوى الأعطال. يجمعون مقاييس الأعطال عبر أبعاد مختلفة مثل عدد الأعطال لكل نظام تشغيل ولكل إصدار، وتوزيع الأعطال لكل إصدار. يستفيد هذا الاستخدام من عدة أنواع من فهارس Pinot (نطاق، معكوس، ونصي) للكشف عن موعد وقوع نوع من الأعطال، أي الإصدارات المتأثرة، عدد الحوادث، وعدد المستخدمين والأجهزة المتضررة.
للتحليل المتعمق، كان من الضروري أن يمتلك Uber قدرات بحث نصية لقراءة رسائل خطأ الأعطال. فهرس النص في Pinot مبني على Lucene يمنحهم القدرة على البحث في الأعطال حسب رسالة الأعطال، اسم الفئة، سلاسل الأخطاء، وأكثر من ذلك.
قياس الجلسات على نطاق واسع
يستخدم Uber أيضًا Pinot لقياس الجلسات الفريدة حسب الجهاز، الإصدار، نظام التشغيل، والساعة على نطاق واسع. يوفر Pinot المعالجة الفورية بمعدل تحميل عالي السعة قادر على استيعاب أحداث Uber التحليلية البالغة 300,000 في الثانية. يمتلك الفريق تركيبًا مختلطًا يشمل جدول فوري بدقة 10 دقائق واحتفاظ بالبيانات لمدة 3 أيام، وكذلك جدول للبيانات الموجزة على الساعة واليومية واحتفاظ بالبيانات لمدة 45 يومًا.
استغلال Apache Pinot’s HyperLogLog سمح للفريق بتقليل عدد الأحداث التي يتم تخزينها وإجراء معدل أقل من التجميعات الفريدة عبر الأحداث. كما قدم Pinot أيضًا تأخرات منخفضة للغاية – تحت 100 مللي ثانية لتأخر p99.5.
توفير تكلفة البنية التحتية
وفقًا لحسابات Uber، تمكنوا من توفير أكثر من 2 مليون دولار سنويًا في تكاليف البنية التحتية بسبب التحول إلى Pinot. كان تشغيلهم لـ Pinot قائمًا على انخفاض بنسبة 70% في تكاليف البنية التحتية مقارنة بـ Elasticsearch. كما شهدوا انخفاضًا بنسبة 80% في أجزاء CPU وانخفاضًا بنسبة 66% في مساحة فراغهم.
مع Elasticsearch، كانت Uber تستخدم 22000 جزء من CPU. مع Pinot، تمكنوا من تخفيض هذا الرقم بنسبة 80%. هذه لقطة لإعداد Pinot الخاص بهم:
تحسين أداء الاستعلام وتجربة المستخدم
مع Apache Pinot، يمكن لـ Uber تقديم تجربة مستخدم أفضل مع تحسين تحميل الصفحات والثبات. التحول إلى Pinot خفض مدة التحميل الصفحي بنسبة 64%، من 14 ثانية إلى أقل من 5 ثوان. كما يتسم Pinot بتحمل أفضل لتدفق الحمل المفاجئ، مما يؤدي إلى استعادة التأخير بشكل أسرع. حتى إذا شهد الفريق تأخيرًا في الاستيراد، يمكن لـ Pinot استعادة السرعة في غضون بضع دقائق.
مقارنة بـ Elasticsearch، أظهر Pinot تحسينات كبيرة عبر أوقات تعطيل الاستعلام وفقدان البيانات. إذا وقعت كارثة في تطبيق الهاتف المحمول أثناء استخدام Elasticsearch، فإن الاستعلامات المتعلقة بتلك الفهرس ستتعطل. حلت Uber هذه المشكلة مع Pinot عن طريق السيطرة على حجم الجزء. كما لم يكن لدى الفريق مشاكل في فقدان البيانات مع Pinot، مقارنة بمشاكل البيانات المتكررة عندما كان Elasticsearch يتعامل مع زيادة معدل الاستيراد.
التكرار التالي لإعداد Pinot لـ Uber
بعدها، تخطط Uber للانتقال إلى الفهرسة النصية الأصلية لبيانات تحطمهم المحمولة. تحتوي بيانات تحطمهم المحمولة على الكثير من البيانات المنظمة، مما يجعل من الممكن للفريق نقل جميع حالات استخدامهم إلى الفهارس النصية الأصلية. ستوفر هذه الانتقالات ت源ات عن التخزين المتاح وتقليل الوقت المستغرق في استعلام البيانات.
ليس Uber هي المنظمة الوحيدة التي تشهد نجاحًا من خلال الانتقال من Elasticsearch إلى Pinot
شهدت شركة Uniqode (السابقة Beaconstac) تحسنًا بنسبة 10 أضعاف في الأداء العام للاستعلامات بالتبديل من Elasticsearch إلى Pinot. انتقلت Cisco Webex أيضًا إلى تحليلاتهم الفورية والرصد المرئي بعد مواجهة التأخيرات العالية. وجد فريق Webex أن Apache Pinot قدم تأخيرات أقل بنسبة 5 إلى 150 مرة مقارنة بـ Elasticsearch.
Source:
https://dzone.com/articles/real-time-app-crash-analytics-with-apache-pinot