See the engineering behind real-time personalization at Tripadvisor’s massive (and rapidly growing) scale تُحاول Tripadvisor تقييم ذلك بمجرد التفاعل مع الموقع، ثم توفر لك معلومات أكثر أهمية في كل مكالمة - في غضون ملي ثانية. في هذه المقالة ، يوفر ديان بوين (Tripadvisor Data Engineering Leader في فريق خدمات ومنتجات الذكاء الاصطناعي) نظرة على كيفية تمكين هذه التخصيصات. يعتمد على AWS re:Invent Talk التالي: الرؤية قبل الرحلة في كلمات ديان... تأسست في عام 2000، وقد أصبحت Tripadvisor رائدة عالمية في مجال السفر والتسوق، مما يساعد مئات الملايين من السائحين على تخطيط رحلاتهم المثالية. في أي يوم، يستخدم نظامنا أكثر من مليار طلب من 25 إلى 50 مليون مستخدم. يتم معالجة كل مكالمة على TripAdvisor في الوقت الحقيقي.بعد ذلك، نحن نستفيد من نموذج التعلم الآلي لتقديم توصيات شخصية - مما يجعلك أقرب إلى هذه الرحلة المثالية.في قلب هذا محرك التخصيص هو ScyllaDB الذي يعمل على AWS. هذا يسمح لنا بتزويد التوقعات بمعدل مليار ثانية يمكن أن تحصل عليه قليلا من المنظمات. . 425K operations per second on ScyllaDB with P99 latencies for reads and writes around 1-3 milliseconds وسوف نتشارك في كيفية استخدام Tripadvisor قوة ScyllaDB، AWS، والتعلم الآلي في الوقت الحقيقي لتوفير توصيات شخصية لكل مستخدم. وسوف نستعرض كيف سنساعد السائحين على اكتشاف كل ما تحتاجه لتخطيط رحلتهم المثالية: ما إذا كان هذا هو اكتشاف الأسماك المفتوحة، الأماكن التي يجب رؤيتها، تجربة لا تنسى، أو أفضل الأماكن للاستمتاع والتناول. [المقال] هو عن الهندسة الخلفية - كيف نقدم محتوى متكامل وفعال للمستخدمين في الوقت الحقيقي، مما يساعدهم على العثور على ما يريدونه بسرعة أكبر. تصميم رحلة شخصية عندما تصل إلى الصفحة الرئيسية لشركة Tripadvisor ، فإن TripAdvisor يعرف بالفعل ما إذا كنت مأجورة أو مغامرة أو محبي الشاطئ - وكنت ترى إرشادات على الفور التي تبدو شخصية لمتطلباتك الخاصة. عندما تتصفح TripAdvisor، نبدأ بتخصيص ما تراه باستخدام نموذج التعلم الآلي الذي يحدد الأرقام على أساس نشاطك الحالي والعام الماضي.نوصي الفنادق والخبرات التي نعتقد أنك ستكون مهتمًا بها.نقوم بتخصيص الفنادق وفقًا للخيارات الشخصية الخاصة بك.نوصي الأماكن المفضلة بالقرب من الفندق الذي تريد مشاهدة.هذه كلها تعتمد على خصائصك الشخصية ومشاريعك السابقة. نموذج Tripadvisor يستخدم الأكاديمية يعمل Tripadvisor على مئات الخدمات الصغيرة التي يمكن تطويرها بشكل مستقل في Kubernetes on-prem و في Amazon EKS. تظهر منصة ML Model Serving لدينا من خلال واحدة من هذه الخدمات الصغيرة. ويسمح لنا بإنشاء اختبارات A/B لتحديد أفضل النماذج باستخدام منصة تجربةنا.تطوير نموذج ML هو أساسا من قبل علماء البيانات والمهندسين في علم الآلة باستخدام Jupyter Notebooks على Kubeflow.تديرها وتدريبها باستخدام ML Flow، ونحن نستخدمها في Seldon Core في Kubernetes. متجر Custom Feature تستخدم متاجر الخصائص بشكل رئيسي خصائص المستخدمين والخصائص الاستثنائية. يتم تخزين خصائص الاستثنائية في Redis لأنها لا تتغير بشكل متكرر. نحن نقوم بتشغيل خطوط البيانات يومياً لتنزيل البيانات من متاجر البيانات الاستثنائية لدينا إلى متاجر الخصائص كخصائص الاستثنائية. يتم تقديم ميزات المستخدم في الوقت الحقيقي من خلال منصة تسمى منصة زوار.نحن نقوم بإجراء استفسارات CQL الديناميكية ضد ScyllaDB، و . we do not need a caching layer because ScyllaDB is so fast توفر متجر الميزات لدينا ما يصل إلى 5 ملايين ميزات ثابتة في الثانية و نصف مليون ميزات مستخدم في الثانية. ما هو ميزة ML؟ الخصائص هي المتغيرات في النماذج ML التي تستخدم لإجراء التوقيت. بعض الأمثلة على ميزات ثابتة هي الجوائز التي حققها المطعم أو المرافق التي تقدمها الفندق (مثل Wi-Fi مجاني أو مركز الترفيه). يتم جمع خصائص المستخدمين في الوقت الحقيقي عندما يزور المستخدمون موقعنا، ونحن نقوم بتخزينها في ScyllaDB حتى نتمكن من الحصول على استفسارات سريعة. تكنولوجيات تتيح منصة الزوار ScyllaDB هو أساس منصة زوار.نحن نستخدم خدمات Spring Boot الذكية التي تستند إلى جاوا لإظهار منصة لعملاءنا.هذه يتم تنفيذها على AWS ECS Fargate.نستخدم Apache Spark على Kubernetes لعملات حفظ البيانات اليومية لدينا، والعملات عبر الإنترنت لدينا.نستخدم هذه العملات لتنزيل البيانات من مخزون البيانات عبر الإنترنت لدينا إلى ScyllaDB حتى تكون متاحة على الموقع الحي.نستخدم أيضا Amazon Kinesis لإجراء أحداث التتبع للمستخدمين عبر الإنترنت. تدفق البيانات من منصة الزوار يظهر الرسم البياني التالي كيف تنقل البيانات عبر منصةنا في أربعة مراحل: إنتاج، استهلاك، تنظيم، وتشغيل. يتم إنتاج البيانات من خلال موقعنا الالكتروني وبرمجياتنا المحمولة. يتم استخدام ميكروباصليات منصة زوار لتسجيل وتعديل هذه البيانات.إن البيانات في ScyllaDB يتم تخزينها في مساحة مفاتيحين: مساحة المفاتيح الضوئية للمستخدم، والتي تحتوي على جدول الهوية للمستخدم مساحة المفاتيح المستخدمة ، والتي تحتوي على حقائق ومقارنة ( الأشياء التي فعلتها الأشخاص أثناء زيارت الموقع) نحن نستخدم عمليات ETL اليومية لتنمية البيانات في منصة، ونقوم بتصنيع منتجات البيانات، التي يتم تصنيعها يومياً، في مخزون البيانات عبر الإنترنت، حيث تتوفر هذه البيانات لمكافحة التكاملات الأخرى ووسائل البيانات الأخرى لاستخدامها في معالجة البيانات. إليكم نظرة على منصة الزوار بواسطة الأرقام: لماذا 2 قاعدة بيانات؟ نحن نستخدم بيانات TTL على المدى القصير لمنع البيانات في بيانات الإنترنت من النمو لفترة غير مسبوقة، وتأكد من أننا نحتفظ فقط ببيانات الأنشطة المستخدمة للزوار الحقيقيين. Tripadvisor.com يحصل على الكثير من بيانات البوت، ونحن لا نريد تخزين بياناتهم وتحاول تخصيص البوتات - لذلك نقوم بإزالة وكشف كل هذه البيانات. لا نريد عملية البيانات المباشرة على نطاق واسع تؤثر على أداء موقعنا الحي، لذلك لدينا قاعدة بيانات منفصلة تستخدم لأغراض مختلفة. منصة زوار Microservices نحن نستخدم 5 ميكروسوفتات لبرنامج زائر: يسيطر Visitor Core على شاشة الهوية المستخدمة عبر الأجهزة على أساس الكوكيز والهوية الجهازية. تتيح لنا ميكانيكا زوارنا القدرة على إظهار حقائق ومقترحات للمستخدمين المحددين، ونحن نستخدم لغة محددة باللغة المعروفة باسم لغة زيارة زوارنا، أو VQL. يعمل Visitor Publisher وVisitor Saver على مسار الكتابة، وتسجيل البيانات إلى منصة. بالإضافة إلى تخزين البيانات في ScyllaDB، نحن أيضا نقل البيانات إلى مخزون البيانات خارج الإنترنت. يسهل Visitor Composite نشر البيانات في وظائف معالجة المجموعة، ويستند إلى Visitor Saver وVisitor Core لتحديد الزوار وتحرير الحقائق والرقائق في إرسال API واحد. Roundtrip Microservice تلوث تظهر هذه الشاشة كيف تظل التوقعات في ميكروسوفت ثابتة مع مرور الوقت. تتراوح متوسط مدة الإنتظار فقط 2.5 ميلي ثانية، و P999 لدينا أقل من 12.5 ميلي ثانية. وهذه أداء مثير للاهتمام، خاصة مع أننا نعمل على أكثر من مليار طلب في اليوم. يحتاج عملاء ميكروسوفت لدينا متطلبات التوقيت الصارمة. 95% من المكالمات يجب أن تنتهي في 12 مليار ثانية أو أقل. ScyllaDB التوقف إليك صورة عن أداء ScyllaDB خلال ثلاثة أيام. في أعلى مستوى، ScyllaDB يتعامل مع 340،000 العمليات في الثانية (بما في ذلك الكتابة والرسائل والرسائل) وCPU يقلل من 21٪ فقط. ScyllaDB يوفر أدوات الكتابة والرسائل الملي ثانية لنا، وهذا المستوى من الأداء السريع هو بالضبط السبب في أننا اختارنا ScyllaDB. تحويل البيانات إلى ScyllaDB هذه الصورة تظهر كيف نحدد البيانات في ScyllaDB. يمتلك غرفة مفاتيح زائرين اثنين من الأقراص: حقائق ومعدلات خام. يمتلك المفتاح الرئيسي في جدول حقائق GUID زائر، نوع حقائق، وخلق في تاريخ. يمتلك مفتاح الفرق المكونة GUID زائر وخلق في تاريخ. يمتلك مفتاح الفرق بين الحقائق Created At Date، الذي يسمح لنا بتحديد البيانات في الفرق حسب تاريخ. يمتلك صفحة الخصائص مصطلح JSON يمثل الحدث الذي حدث هناك. نحن نستخدم استراتيجية ScyllaDB لـ Leveled Compaction لأنها: تمكنك من التحكم في استفسارات النطاق يتعامل مع الكردستانية العالية بشكل جيد إنها أفضل للعبور عن العمل المزدوج، ونحن لدينا حوالي 2-3 مرات أكثر من القراءة من الكتابة. لماذا ScyllaDB؟ تم إنشاؤ حلولنا في البداية باستخدام Cassandra on-prem، ولكن مع تزايد نطاق النطاق، كان هناك أيضًا مبالغ تشغيلية. كان من الضروري دعم العمليات المخصصة لإدارة تحديثات قاعدة البيانات، ورقم البيانات، وما إلى ذلك أيضا، فإن حلولنا تتطلب التوقعات المنخفضة للغاية للمكونات الأساسية. يجب أن تحدد نظام إدارة الهوية المستخدمة لدينا في غضون 30 ميلي ثانية - وأيضًا لتخصيص أفضل، نحن بحاجة إلى منصة مراقبة الأحداث لردها في غضون 40 ميلي ثانية. قمنا بتنفيذ اختبار مفهوم مع ScyllaDB و وجدنا أن الإنتاج هو أفضل بكثير من Cassandra و تم إزالة العبء التشغيل. ScyllaDB قدم لنا قاعدة بيانات خدمة سريعة للغاية مع أدنى تأخير ممكن. لقد أرادنا خيارًا مُستقيمًا تمامًا، لذلك انتقلنا من كاساندرا إلى ScyllaDB Cloud، باستخدام استراتيجية الكتابة المزدوجة، مما يسمح لنا بتنقل مع أقل من وقت إغلاق في الوقت الذي يتم فيه معالجة 40،000 عمليات أو طلبات في الثانية. تظهر هذه الشاشة كيف تبدو توزيع BYOA ل ScyllaDB. في وسط الشكل، يمكنك أن ترى مجموعة ScyllaDB 6 نانوم التي تعمل على EC2، ثم هناك اثنين من الوثائق EC2 إضافية. ScyllaDB Monitor يوفر لنا لوحات Grafana وكذلك معدلات Prometheus. ScyllaDB Manager يتعامل مع تكنولوجيا التحكم في البنية التحتية مثل تشغيل تحديثات البنية التحتية والإصلاحات. مع هذا التطوير، قد يتم وضع ScyllaDB قريبًا جدًا من خدماتنا الذكية لتمكيننا من تقييم التوقعات أدنى وأكثر من ذلك بكثير. في المقابل، أعتقد أنك الآن لديك فهم أفضل لهيكلنا، والتقنيات التي تدعم منصة، وكيف تلعب ScyllaDB دوراً حاسماً في تمكيننا من التعامل مع نموذج Tripadvisor عالية للغاية. بواسطة Cynthia Dunlop كينثيا هي المدير الرئيسي لسياسة المحتوى في ScyllaDB. لقد كتبت حول تطوير البرمجيات والهندسة الجودة لأكثر من 20 عاما.