See the engineering behind real-time personalization at Tripadvisor’s massive (and rapidly growing) scale Tripadvisor ეძებს ეს შეფასებას, როდესაც თქვენ გაუზიარებთ საიტზე, და შემდეგ გთავაზობთ უფრო მნიშვნელოვანი ინფორმაციას ყოველ კლიკს – მლსკამენტში. ეს კმაყოფილება იძლევა გაფართოებული ML მოდელები, რომლებიც ეფუძნება ScyllaDB- ში გაფართოებული მონაცემებს AWS- ში. ამ სტატიაში, Dean Poulin (Tripadvisor Data Engineering Lead on the AI Service and Products გუნდი) გთავაზობთ მიმოხილვა, თუ როგორ ისინი გაძლევთ ამ პირდაპირირება. Dean გაუზიარებს ტექნიკური მოთხოვნებს, რომლებიც მოიცავს რეალურ დროში პირდაპირირება Tripadvisor- ის ფართო (და სწრაფად ზრდის) ფართობი. AWS re:Invent განიხილება: Pre-Trip მიმოხილვა Dean-ის სიტყვა ... Tripadvisor, რომელიც დაარსდა 2000 წელს, გახდა გლობალური წამყვანი მოგზაურობა და სასტუმროში, დაეხმაროს ათასობით მილიონი მოგზაუროებს მათი შესანიშნავი მოგზაურობა დაჯავშნა. Tripadvisor აწარმოებს მეტი 1.8 მილიარდი დოლარი სავაჭრო და არის NASDAQ- ის ფართო ბაზარზე ჩართული კომპანიას. დღეს, ჩვენ გვაქვს მეტი 2800 თანამშრომელი, რომლებიც ინოვაციებს და ჩვენი პლატფორმა ყოველთვიური 400 მილიონი უნიკალური მოგზაურობა მომსახურებს – ეს რაოდენობა მუდმივად იზრდება. ყოველდღიურად, ჩვენი სისტემა აწარმოებს მეტი 2 მილიარდი მოთხოვნებს 25-50 მილიონი მომხმარებელს. ყოველ კლიკს, რომელიც თქვენ გაქვთ Tripadvisor- ში, რეალურ დროში დამუშავებულია. მას შემდეგ, რაც ჩვენ მანქანული სასწავლო მოდელები გაუმჯობესებთ პირდაპირი რეკომენდაციების უზრუნველყოფს - თქვენ უფრო დაახლოებით ამ სრულყოფილი მოგზაურობას. ამ პირდაპირირების საავტომობილო ძირითადი ძიება არის ScyllaDB, რომელიც მუშაობს AWS- ში. ეს საშუალებას გაძლევთ გაძლევთ millisecond-latency ზომაში, რომელიც პატარა ორგანიზაციები შეხვდება. მაქსიმალური ტრანსპორტის დროს, ჩვენ დაახლოებით . 425K operations per second on ScyllaDB with P99 latencies for reads and writes around 1-3 milliseconds ჩვენ შეამოწმოთ, თუ როგორ მოგზაურობა დაგეხმარებათ დაგეხმაროთ მოგზაურობებს, რომ დაგეგმოთ მათი სრულყოფილი მოგზაურობა: თუ არა ის, რომ აღმოაჩინოთ შეკუმჯობესებული კედლები, must-see მოვლენები, შეუზღუდავი გამოცდილება, ან საუკეთესო ადგილები, სადაც დაჯავშნა და სინამდვილეში. ეს [დაწვრილებით] არის ამ ინჟინერი - როგორ ჩვენ გთავაზობთ საბაჟო, დაკავშირებული შინაარსი მომხმარებელს რეალურ დროში, დაეხმარებათ მათ იპოვოთ, რაც ისინი ეძებენ სწრაფად. პერსონალური მოგზაურობა მიუთითეთ, რომ მოგზაურობა დაგეგმვათ. მას შემდეგ, რაც ხართ Tripadvisor მთავარი გვერდზე, Tripadvisor უკვე იცის, თუ თქვენ ხართ foodie, საოცარი, ან beach lover - და თქვენ ხედავთ spot-on რეკომენდაციები, რომლებიც იმიტომ, რომ პირდაპირი თქვენი ინტერესიები. როგორ ხდება, რომ milliseconds? Tripadvisor- ის მიმოხილვის დროს ჩვენ იწყებთ, რაც თქვენ ხედავთ, მექანიკური სასწავლო მოდელები გამოყენებით, რომლებიც სავარაუდოდ დააკმაყოფილოს სავარაუდოდ თქვენი ამჟამად და წინა ბრაუზერის საქმიანობის მიხედვით. ჩვენ გთავაზობთ სასტუმროებს და გამოცდილებებს, რომლებიც ჩვენ ვფიქრობთ, რომ თქვენ სარგებლობენ. ჩვენ სასტუმროებს აირჩიეთ თქვენი პირადი პარამეტრების მიხედვით. ჩვენ გთავაზობთ პოპულარული სასტუმროები სასტუმროზე, რომელიც თქვენ ხედავთ. ეს ყველა თქვენი პირადი პარამეტრების და წინა ბრაუზერის საქმიანობის მიხედვით. Tripadvisor- ის მოდელი მომსახურების არქიტექტურა Tripadvisor მუშაობს hundreds of independently scalable microservices in Kubernetes on-prem და Amazon EKS. ჩვენი ML მოდელი მომსახურების პლატფორმა გამოჩნდა ერთ-ერთი ამ microservices. ამ გარიგების მომსახურება იღებს მეტი 100 ML მოდელები კლიენტების მომსახურებისგან – რაც საშუალებას გაძლევთ A / B ტესტირების გაკეთება, რათა იპოვოთ საუკეთესო მოდელები ჩვენი ექსპერიმენტი პლატფორმის გამოყენებით. ML მოდელები ძირითადად ჩვენი მონაცემთა მეცნიერები და მანქანული სასწავლო ინჟინრები იყენებენ Jupyter Notebooks on Kubeflow. ისინი მენეჯმენტი და ტრენინგი ML Flow- ის გამოყენებით და ჩვენ მათ გააყენებთ Seldon Core- ში Kubernetes- ში. ჩვენი Custom Feature Store უზრუნველყოფს ჩვენი ML მოდელები, რომელიც საშუალებას გაძლევთ სწორი პროგნოზები. Custom Feature სავაჭრო ფუნქციონალური სავაჭრო ძირითადად მომსახურება მომხმარებლის ფუნქციონები და სტატისტიკური ფუნქციონები. სტატისტიკური ფუნქციონები შეინახება Redis- ში, რადგან ისინი ძალიან ხშირად არ ცვლილებენ. ჩვენ ყოველდღიურად იყენებთ მონაცემთა pipelines, რათა მონაცემები ჩვენი offline მონაცემთა სავაჭროში ჩვენი ფუნქციონალური სავაჭროში სტატისტიკური ფუნქციონები. მომხმარებლის ფუნქციონები რეალურ დროში გთავაზობთ პლატფორმა, რომელიც გამოიყენება Visitor Platform. ჩვენ გააკეთა დინამიური CQL კითხვები ScyllaDB, და . we do not need a caching layer because ScyllaDB is so fast ჩვენი Feature Store უზრუნველყოფს მდე 5 მილიონი სტატისტიკური ფუნქციები წამში და ნახევარი მილიონი მომხმარებლის ფუნქციები წამში. რა არის ML Feature? ფუნქციები არის ML მოდელები, რომლებიც გამოიყენება პროგნოზი. არსებობს სტატისტიკური ფუნქციები და მომხმარებლის ფუნქციები. ზოგიერთი მაგალითები სტატისტიკური ფუნქციონები არის ფსონი, რომელიც სასტუმრო უკვე მიიღო ან მოწყობილობები, რომელიც სასტუმრო გთავაზობთ (გალითად, უფასო Wi-Fi, სასტუმრო მეგობრული ან ფიტნეს ცენტრი). მომხმარებლის ფუნქციონები რეალურ დროში იკავშირებენ მომხმარებლის საიტზე. ჩვენ მათ შენახვათ ScyllaDB- ში, ასე რომ ჩვენ შეგვიძლია მიიღოთ სწრაფი კითხვებს. ზოგიერთი მაგალითები მომხმარებლის ფუნქციონები არის სასტუმროები, რომლებიც ბოლო 30 წუთში იხილეთ, სასტუმროები, რომლებიც ბოლო 24 საათის განმავლობაში იხილეთ, ან მიმოხილვა, რომელიც ბოლო 30 დღის განმავლობაში გამოგზავნილია. The Technologies Powering Visitor პლატფორმა ScyllaDB არის Visitor Platform- ის ძირითადი პლატფორმა. ჩვენ გამოიყენებთ Java-based Spring Boot microservices, რათა პლატფორმა ჩვენს კლიენტებს გამოცემოთ. ეს განლაგება AWS ECS Fargate- ში. ჩვენ იყენებთ Apache Spark Kubernetes- ში ყოველდღიური მონაცემთა შენარჩუნების სამუშაოები, ჩვენი offline- ის ონლაინ სამუშაოები. შემდეგ ჩვენ გამოიყენებთ ეს სამუშაოები მონაცემების ჩამოტვირთვა ჩვენი offline მონაცემთა შენარჩუნება ScyllaDB- ში, ასე რომ ისინი ხელმისაწვდომია Live- ში. ჩვენ ასევე გამოიყენებთ Amazon Kinesis- ს მომხმარებლის სტრუქტურა. მომხმარებლის პლატფორმა Data Flow შემდეგი გრაფიკი აჩვენებს, თუ როგორ მონაცემები ჩვენი პლატფორმა მეშვეობით ოთხი ნაბიჯებში: წარმოება, აღჭურვილობა, ორგანიზება და გააქტიურება. მონაცემები შექმნილია ჩვენი საიტზე და ჩვენი მობილური აპლიკაციები. ზოგიერთი ამ მონაცემებს მოიცავს ჩვენი Cross-Device User Identity Graph, Behavior Tracking მოვლენები (მაგ. გვერდის მიმოხილვა და დაწკაპუნებები) და სტრუქტურული მოვლენები, რომლებიც Kinesis- ის მეშვეობით გაგრძელებენ. ასევე, პლატფორმაში დატვირთულია პლატფორმა. Visitor Platform- ის microservices გამოიყენება ამ მონაცემების აღჭურვილობის და ორგანიზაციისთვის. მონაცემები ScyllaDB- ში შეინახება ორი keyspace- ში: Visitor Core keyspace, რომელიც შეიცავს Visitor Identity Graph Visitor Metric keyspace, რომელიც შეიცავს ფაქტები და მეტრიკები (გულისხმები, რომ ხალხი გააკეთეს, როდესაც ისინი ნახვა) ჩვენ გამოიყენებთ ყოველდღიური ETL პროცესებს, რათა შენარჩუნოთ და გაწმენდა მონაცემები პლატფორმაში. ჩვენ წარმოგიდგენთ მონაცემთა პროდუქცია, ყოველდღიურად ბეჭდვა, ჩვენი offline მონაცემთა შენახვა - სადაც ისინი ხელმისაწვდომია სხვა ინტეგრირების და სხვა მონაცემთა მილები გამოყენება მათი დამუშავება. აქ არის მიმოხილვა ვიზიტი პლატფორმა ნომერი: რატომ ორი მონაცემთა ბაზა? ჩვენი ონლაინ მონაცემთა ბაზა განკუთვნილია რეალურ დროში, პირდაპირი საიტზე. ScyllaDB ამ ფუნქციას იღებს, რათა უზრუნველყოს ძალიან დაბალი დატენვის და მაღალი გადამცემი. ჩვენ გამოიყენებთ დაბალი ხარისხის TTLs, რათა თავიდან ავიცილოთ მონაცემებს ონლაინ მონაცემთა ბაზარზე მუდმივად, და ჩვენი მონაცემთა შენარჩუნების სამუშაოები უზრუნველყოს, რომ ჩვენ მხოლოდ მომხმარებლის საქმიანობის მონაცემები რეალური მგზავრი. Tripadvisor.com იღებს ბევრი ბოტტის ტაქტი, და ჩვენ არ გსურთ შენარჩუნოთ მათი მონაცემები და ცდილობენ ბოტებს პირდაპირი – ასე რომ ჩვენ გაქვთ და გაწმენდა ყველა ამ მონაცემებს. ჩვენი offline მონაცემთა შენახვა შეინახავს ისტორიული მონაცემები, რომლებიც გამოიყენება ანგარიშების შექმნა, სხვა მონაცემთა პროდუქტები და სასწავლო ჩვენი ML მოდელები. ჩვენ არ გსურთ, რომ ფართო ფართო ფართო მონაცემთა პროცესები ეფუძნება ჩვენი Live საიტის შესრულებას, ასე რომ ჩვენ გვაქვს ორი განსხვავებული მონაცემთა ბაზები, რომლებიც გამოიყენება ორი განსხვავებული მიზნით. პლატფორმა Microservices ჩვენ ვიყენებთ 5 microservices Visitor Platform: Visitor Core მართავს cross-device მომხმარებლის ინტენსიურობის გრაფიკს cookies და მოწყობილობების ID- ს გამოყენებით. Visitor Metric არის ჩვენი კითხვის საავტომობილო, რომელიც უზრუნველყოფს ჩვენთან შესაძლებლობებს ფაქტებს და მეტრიკებს კონკრეტული კლიენტებს. ჩვენ გამოიყენებთ დონეზე კონკრეტული ენაზე, რომელიც გამოიყენება კლიენტების კითხვის ენაზე, ან VQL. ამ მაგალითად VQL საშუალებას გაძლევთ იხილოთ უახლესი კომერციული კლიენტების ფაქტებს ბოლო სამი საათის განმავლობაში. Visitor Publisher და Visitor Saver გააკეთა წერილის გზა და მონაცემები პლატფორმაში. ScyllaDB- ში მონაცემების შენახვის გარდა, ჩვენ ასევე მონაცემებს offline მონაცემთა შენახვაში. ეს გააკეთა Amazon Kinesis- ში. Visitor Composite ადვილად გამოქვეყნებს მონაცემებს ბარიკული დამუშავების სამუშაოები. იგი აღიარებს Visitor Saver და Visitor Core, რათა იპოვოთ მგზავრი და გამოქვეყნოთ ფაქტები და მეტრიკები ერთი API call. Roundtrip Microservice მობილური მომსახურება ეს გრაფიკი იხილავს, თუ როგორ ჩვენი microservice latencies გაგრძელდება სტაბილური დროს. საშუალო თარიღი მხოლოდ 2.5 მლსკუდი, და ჩვენი P999 არის ქვემოთ 12.5 მლსკუდი. ეს არის შეუზღუდავი შესრულება, განსაკუთრებით იმიტომ, რომ ჩვენ გადამუშავებთ მეტი 1 მილიარდი მოთხოვნებს ყოველდღიურად. ჩვენი microservice კლიენტებს მკაცრი თარიღი მოთხოვნები. 95% კითხვებს უნდა დასრულდეს 12 მლსკუდი ან ნაკლები. თუ ისინი გაქვთ, რომ, მაშინ ჩვენ უნდა გაიგოთ, რა ეფექტი ხელს უწყობს თარიღი. ScyllaDB წნევა აქ არის ScyllaDB- ის შესრულების მახასიათებლები სამი დღის განმავლობაში. ზომის დროს ScyllaDB აწარმოებს 340,000 ოპერაციებს წამში (მაგ. წაიკითხა და წაიკითხა და წაიკითხა) და CPU მხოლოდ 21%. ეს არის მაღალი ზომის ოპერაცია! ScyllaDB უზრუნველყოფს microsecond წერილები და millisecond წერილები ჩვენთვის. ამ დონეზე blazing სწრაფი ეფექტურობა არის მხოლოდ რატომ ჩვენ აირჩიეთ ScyllaDB. კონფიგურაცია ScyllaDB ეს სურათი აჩვენებს, თუ როგორ ჩვენ partition მონაცემები ScyllaDB. Visitor Metric Keyspace აქვს ორი ტაბლეები: Fact და Raw Metrics. Fact ტაბლეში ძირითადი key არის Visitor GUID, Fact Type და Created At Date. კომპონენტური partition key არის Visitor GUID და Fact Type. Clustering key არის Created At Date, რომელიც საშუალებას გაძლევთ გააყენოთ მონაცემები partitions მიერ თარიღი. attributes კოლუტაში შეიცავს JSON მოვლენას, რომელიც მოიცავს მოვლენას, რომელიც ხდება. ზოგიერთი მაგალითები Facts არის Search Terms, Page Views, და Bookings. ჩვენ გამოიყენებთ ScyllaDB- ის Leveled Compaction სტრატეგიას, რადგან: ეს არის ოპტიმიზებული range კითხვები ძალიან კარგად შეესაბამება მაღალი kardinality ეს არის უკეთესი წაიკითხვის მძიმე workloads, და ჩვენ გვაქვს დაახლოებით 2-3X მეტი წაიკითხვა, ვიდრე წაიკითხვა რატომ არის ScyllaDB? ჩვენი გადაწყვეტილება დასაწყისში შეიქმნა Cassandra on-prem გამოყენებით. მაგრამ მასშტაბით, რაც ზრდის, ოპერაციული წვრთნები იზრდება. ეს საჭიროა სპეციფიკაციური ოპერაციების მხარდაჭერა, რათა ჩვენ შეგვიძლია მართოთ მონაცემთა ბაზის განახლება, backups და ა.შ. ასევე, ჩვენი გადაწყვეტილება მოითხოვს ძალიან დაბალი წვრთნები ძირითადი კომპონენტები. ჩვენი მომხმარებლის Identity Management სისტემა უნდა იპოვოს მომხმარებელს 30 მლიზსკენტში – და საუკეთესო პირდაპირიზაციისთვის, ჩვენ მოითხოვს ჩვენი Event Tracking პლატფორმა რეაგირება 40 მლიზსკენტში. მნიშვნელოვანია, რომ ჩვენი გადაწყვეტილება არ ბლოკს გვერდზე, ასე რომ ჩვენი SLAs ძალიან დაბ ScyllaDB- ის გამოყენებით ჩვენ გააკეთა Proof of Concept- ს და ვფიქრობთ, რომ გადაცემა Cassandra- ს უფრო უკეთესია და ოპერაციული ტანსაცმელი გააუმჯობესდა. ScyllaDB- ის საშუალებით ჩვენ გვაძლევს უძრავი სწრაფი პირდაპირი მომსახურების მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა მონაცემთა ჩვენ გსურთ სრულიად მართული ვარიანტი, ასე რომ ჩვენ გადარჩენა Cassandra ScyllaDB Cloud, შემდეგ ორმაგი წერილის სტრატეგიის. ეს საშუალებას გაძლევთ გადარჩენა zero downtime ხოლო დამუშავება 40,000 ოპერაციები ან მოთხოვნები წამში. შემდეგ, ჩვენ გადარჩენა ScyllaDB Cloud ScyllaDB- ის "ბრუნვა თქვენი საკუთარი ანგარიშის" მოდელი, სადაც თქვენ შეგიძლიათ გაძლევთ ScyllaDB გუნდი გადარჩენა ScyllaDB მონაცემების თქვენი საკუთარი AWS ანგარიშში. ეს გაუმჯობესდა შესრულება და უკეთესი მონაცემების კონფიდენციალურობის. ეს დიაგრამა აჩვენებს, თუ როგორ გამოიყურება ScyllaDB- ის BYOA განთავსება. დიაგრამის ცენტრში, თქვენ შეგიძლიათ იხილოთ 6 ნომერი ScyllaDB კრისტრი, რომელიც იყენებს EC2. და შემდეგ არსებობს ორი დამატებითი EC2 instances. ScyllaDB Monitor გთავაზობთ Grafana dashboards და Prometheus მეტრიკები. ScyllaDB მენეჯერი იძლევა ინფრასტრუქტურის ავტომატაცია, როგორიცაა backups და რედაქტები. ამ განთავსებით, ScyllaDB- ს შეუძლიათ დატვირთოთ ჩვენი microservices- ის ახლოს, რათა ჩვენ გაძლევთ უფრო დაბალი დატვირთვები, ისევე როგორც უფრო მაღალი გადაცემა და შესრულება. დასაწყისში, მე გსურთ, რომ თქვენ ახლა გაქვთ უკეთესი ცოდნა ჩვენი არქიტექტურა, ტექნოლოგიები, რომლებიც უზრუნველყოფს პლატფორმა, და თუ როგორ ScyllaDB ითამაშა მნიშვნელოვანი როლი, რათა ჩვენ გაძლევთ საშუალებას გააკეთოთ Tripadvisor ძალიან მაღალი ზომის. ჩინეთი Dunlop Cynthia არის ScyllaDB- ს კონტაქტის სტრატეგიის წამყვანი დირექტორი და 20+ წლის განმავლობაში პროგრამული უზრუნველყოფის განვითარება და ხარისხის ინჟინერია.