تارانتول: نظرة المحلل

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

يطرح العديد من محللي ومهندسي النظام الآن أسئلة:

  1. كيفية تصميم بنية منصة الزناد للتسويق في الوقت الحقيقي؟
  2. كيفية تنظيم هيكل بيانات يلبي متطلبات استراتيجية التسويق للتفاعل مع العملاء؟
  3. كيف يمكن ضمان التشغيل المستقر لمثل هذا النظام تحت أحمال عالية جدًا؟

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

بمجرد أن جاء إلينا مشغل اتصالات كبير للمساعدة.

كانت المهمة كما يلي:

لدينا أكثر من 100 مليون مشترك. نحن نعرف الكثير عنهم: الرصيد الحالي ، وحجم حركة المرور ، والخدمات المتصلة ، والرحلات ، والأماكن المفضلة. نستخدم المعلومات قدر المستطاع: نجمع البيانات خلال اليوم ، نضع كميات ضخمة من المعلومات في المستودع (DataLake). نبدأ معالجات في الليل ، في الصباح نقوم بإنشاء حملات إعلانية وإرسال العروض.

ونريد أن نفعل نفس الشيء في الوقت الحقيقي!

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



ما تحتاجه لحل مشكلة العمل:

  • يمكنك تحديد الحاجة من خلال ملف تعريف العميل.
  • حدد اللحظة - وفقًا لأحداث الحياة البشرية.
  • تحفيز التغذية الراجعة - اختيار قناة الاتصال المثلى.

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

من وجهة نظر فنية ، يجب علينا حل المشاكل التالية:

  • الاحتفاظ بأحدث البيانات لأكثر من 100 مليون مشترك ؛
  • معالجة تدفق الأحداث في الوقت الفعلي بحمولة 30،000 RPS ؛
  • تشكيل وتوجيه العروض المستهدفة للمشتركين مع تلبية المتطلبات غير الوظيفية (وقت الاستجابة ، التوفر ، إلخ) ؛
  • الاتصال السلس للمصادر الجديدة للبيانات غير المتجانسة من قبل المشتركين.

"الوقت الحقيقي" في هذه الحالة يعني معالجة المعلومات في 30 ثانية. إنها لا طائل من ورائها ، لقد فات اللحظة ، رحل العميل. والأكثر حزنًا أنه في مثل هذه الحالة لن يكون واضحًا لماذا (؟) - هل اقترحنا الشيء الخطأ أو لم ننجح في الوقت المناسب؟

الحصول على إجابة لهذا السؤال مهم جدًا لتطوير المنتج:

  1. الترويج لمنتجاتك التسويقية: فرضيات الاختبار ، زيادة الإيرادات.
  2. نجذب العملاء المحتملين: نستثمر في الإعلانات ونستولي على السوق.
  3. نقوم بتوصيل خدمات أو خدمات إضافية: نقوم بتوسيع خط الإنتاج.

من السهل ارتكاب الأخطاء في كل مرحلة. وسعر الخطأ كبير. يجب علينا الفوز بسرعة وبدقة! ولهذا ، يجب أن تكون معلومات العميل كاملة وحديثة. في هذه الحالة ، المعلومات تستحق المال!

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

  1. قاعدة العملاء تنمو باستمرار.
  2. نطاق الخدمات آخذ في التوسع.

في مثل هذه الظروف ، من الفعال جدًا تقسيم قاعدة العملاء. في هذه الحالة ، تقرر استخدام آلية التقسيم الطبقي - التصنيف متعدد المتغيرات للمشتركين.

ببساطة ، نحن نميز مجموعات معينة من المشتركين (الطبقات) حسب نطاقات قيم عدد غير محدود من السمات. في هذه الحالة ، يجب على المشترك تغيير الطبقة تلقائيًا فور انتقال قيمة السمة إلى النطاق المقابل.

الشكل أدناه مثال لنموذج ثلاثي الأبعاد للطبقات منذ الطفولة. الكرة مشترك.



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

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

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

يطلق الزملاء الغربيون على هذا التأثير اسم "Shit in - Shit out".

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

الخلاصة: للتسويق في الوقت الحقيقي ، والتطبيعغير مناسب لأكثر من 100 مليون مشترك.

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

حصلنا على مزيج من:

  • السمات الثابتة التي نادرا ما يتم تحديثها (الاسم ، جواز السفر ، العنوان). كتلة إلزامية بمعرف.
  • وذيل ديناميكي من الطول التعسفي - غالبًا ما يتم تحديث البيانات التي تعتمد على المصدر. عدة كتل مستقلة لكل مصدر.

ويسمى هذا النهج عدم التطبيع. ما مدى ملاءمتها؟

  1. قد لا يتم التحقق من صحة "الذيل" .
  2. نحفظ البيانات "الأولية" كما هي بدون معالجة.
  3. نحن نحفظ جميع المعلومات الواردة ، ولن نفقد أي شيء.
  4. ID , .
  5. ( 2-3 ), .
  6. : .


تحتاج الآن إلى تحديد أداة للتنفيذ. عادة ما يتم ذلك من قبل المهندس المعماري وفقًا للمتطلبات التي جمعها المحلل. من المهم جدًا معرفة NFT - الكمية المتوقعة للبيانات ومستوى الحمل. يعتمد ذلك على طرق تخزين البيانات ومعالجتها التي سنستخدمها.

يشير عنوان هذا الفصل إلى أن خدمتنا ستعالج الكثير من البيانات. والكثير - كم؟ دعونا نكتشف ذلك.

يمكن اعتبار البيانات كبيرة إذا كانت العلاقة غير مرئية لهم بالعين المجردة.

نحن نعالج أكثر من 100 مليون ملف شخصي مختلف للعملاء تحتوي على معلومات غير منظمة ، يتم تحديثها واستخدامها غالبًا - هذه بيانات كبيرة حقيقية.

تحتاج إلى التخزين المؤقت لملفات تعريف العملاء الحالية. بدون تخزين البيانات الساخنة في ذاكرة الوصول العشوائي ، لا يمكن تحقيق المعالجة في الوقت الحقيقي.

حمل زائد


الآن سنتعامل مع كثافة التحميل ، أي مع عدد الطلبات. يستخدم مصطلح "حمولة عالية" لوصف الحالات التي تتوقف فيها المعدات عن تحمل الحمل.

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

تارانتول كمسرع


نحن في Mail.ru Group نستخدم تارانتول لحل مثل هذه المشاكل. لقد قيل الكثير في حبري عن كيفية بناءه "تحت غطاء المحرك" ، لن أكرر نفسي ، سأتذكر فقط النقاط الرئيسية:

Tarantool هو DBMS في الذاكرة وخادم التطبيقات في زجاجة واحدة.

عند العمل مع كمية كبيرة من البيانات ، يُنصح باستخدامها بطريقتين:

  1. كعرض بيانات للتخزين المؤقت للمعلومات في ذاكرة الوصول العشوائي من أجل تسريع الوصول.
  2. كخادم تطبيق لمعالجة البيانات وفقًا لقواعد محددة.

أي أنه يتم تخزين منطق الأعمال بجوار البيانات ، وهو أمر حيوي للخدمات المحملة بشكل كبير. في مشروعنا ، استخدمنا Tarantool كواجهة بيانات "ذكية" ذات منطق أعمال مدمج ، وفقًا لذلك تتم المعالجة الفورية للتيار الوارد من الأحداث والمعلومات.

لماذا يعتبر تارانتول فعالاً في RTM:

  1. التخزين المؤقت للبيانات الساخنة. يتم تخزين ملف تعريف العميل مؤقتًا في الذاكرة ، لذلك فهو دائمًا محدثًا.
  2. الحوسبة المعقدة في الوقت الحقيقي. يتم تشكيل العروض الشخصية للعملاء في الوقت الحقيقي لكل حدث.
  3. حل متسامح وقابل للتطور:

هناك خطرين واضحين في مشروعنا:

  1. , . — Tarantool c , .
  2. , . , . , . , . ، بمعنى آخر. توزيع 100 مليون سجل لجدول الملف الشخصي للعميل بين أجزاء متعددة من أجل موازنة معالجة الاستعلام وبالتالي تقليل الحمل على السجل. أبسط مثال على ذلك هو تقسيم جدول ملف تعريف العميل حسب نطاق قيم المعرّف. لحل هذه المشكلة ، يوفر Tarantool أدوات تغيير الحجم الأفقية ، والتي يمكن العثور على المزيد حولها ، على سبيل المثال ، في مقالة " خرطوشة Tarantool: تقسيم خلفية Lua الخلفية في ثلاثة أسطر ".

استنتاج


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

All Articles