See the engineering behind real-time personalization at Tripadvisor’s massive (and rapidly growing) scale Tripadvisor përpiqet ta vlerësojë këtë sapo të angazhoheni me faqen, pastaj t'ju ofrojë informacione gjithnjë e më të rëndësishme në çdo klikim - brenda një çështje milisekondash. Në këtë artikull, Dean Poulin (Tripadvisor Data Engineering Lead në ekipin e shërbimeve dhe produkteve të AI) jep një vështrim se si ata e fuqizojnë këtë personalizim. Ajo është e bazuar në AWS re:Invent talk: Orientimi para udhëtimit Në fjalët e Dean ... Tripadvisor, i themeluar në vitin 2000, është bërë një lider global në udhëtime dhe mikpritje, duke ndihmuar qindra milionë udhëtarë të planifikojnë udhëtimet e tyre të përsosura. Tripadvisor gjeneron mbi 1,8 miliardë dollarë të të ardhurave dhe është një kompani e tregtuar publikisht në bursën NASDAQ. Sot, ne kemi një ekip të talentuar prej më shumë se 2.800 punonjësve që drejtojnë inovacionin, dhe platforma jonë shërben një numër mahnitës prej 400 milionë vizitorëve unikë në muaj – një numër që po rritet vazhdimisht. Në çdo ditë të caktuar, sistemi ynë përpunon më shumë se 2 miliardë kërkesa nga 25 deri në 50 milionë përdorues. Çdo klikim që bëni në TripAdvisor përpunohet në kohë reale. Pas kësaj, ne po përfitojmë nga modelet e mësimit të makinës për të ofruar rekomandime të personalizuara – duke ju sjellë më afër këtij udhëtimi të përsosur. Në zemër të këtij motori të personalizimit është ScyllaDB që punon në AWS. Kjo na lejon të ofrojmë latencë milisekondë në një shkallë që pak organizata arrijnë. . 425K operations per second on ScyllaDB with P99 latencies for reads and writes around 1-3 milliseconds Ne do të eksplorojmë se si ne do të ndihmojmë udhëtarët të zbulojnë gjithçka që ata kanë nevojë për të planifikuar udhëtimin e tyre të përsosur: nëse është zbulimi i gems fshehur, pamjet e nevojshme, përvoja të paharrueshme, ose vendet më të mira për të qëndruar dhe për të ngrënë. Planifikimi i udhëtimit të personalizuar Sapo të mbërrini në faqen kryesore të TripAdvisor, TripAdvisor tashmë e di nëse jeni një foodie, një aventurier ose një dashnor i plazhit – dhe po shihni rekomandime në vend që duken të personalizuara për interesat tuaja. Ndërsa shfletoni në TripAdvisor, ne fillojmë të personalizojmë atë që shihni duke përdorur modelet e Makinës së Mësimit që llogarisin rezultatet bazuar në aktivitetin tuaj aktual dhe të mëparshëm të shfletimit. Ne rekomandojmë hotele dhe përvoja që mendojmë se do t'ju interesojnë. Ne rendisim hotele bazuar në preferencat tuaja personale. Ne rekomandojmë pika të njohura të interesit pranë hotelit që po shfletoni. Këto janë të gjitha të rregulluara bazuar në preferencat tuaja personale dhe aktivitetin tuaj të shfletimit të mëparshëm. Tripadvisor, arkitektura që shërben Tripadvisor punon në qindra mikro-shërbime të shkallëzuara në mënyrë të pavarur në Kubernetes on-prem dhe në Amazon EKS. Platforma jonë e shërbimit të modelit ML ekspozohet përmes një prej këtyre mikro-shërbimeve. Ky shërbim i portës nxjerr mbi 100 Modele ML nga Shërbimet e Klientit – që na lejon të drejtojmë teste A/B për të gjetur modelet më të mira duke përdorur platformën tonë eksperimentale. Modelet ML zhvillohen kryesisht nga shkencëtarët tanë të të dhënave dhe inxhinierët e mësimit të makinës duke përdorur Notebooks Jupyter në Kubeflow. Ata menaxhohen dhe trajnohen duke përdorur ML Flow, dhe ne i vendosim ato në Seldon Core në Kubernetes. Tregtinë Custom Feature Dyqani i karakteristikave shërben kryesisht për karakteristikat e përdoruesit dhe karakteristikat statike. Karakteristikat statike ruhen në Redis sepse ato nuk ndryshojnë shumë shpesh. Ne drejtojmë gazsjellësit e të dhënave çdo ditë për të ngarkuar të dhënat nga depoja jonë e të dhënave offline në dyqanin tonë të karakteristikave si karakteristika statike. Karakteristikat e përdoruesit shërbehen në kohë reale përmes një platforme të quajtur Platforma e Vizitorëve. Ne ekzekutojmë pyetje dinamike CQL kundër ScyllaDB, dhe . we do not need a caching layer because ScyllaDB is so fast Dyqani ynë i karakteristikave shërben deri në 5 milionë karakteristika statike në sekondë dhe gjysmë milion karakteristika të përdoruesit në sekondë. Çfarë është një ML Feature? Karakteristikat janë variablat e hyrjes në Modelet ML që përdoren për të bërë një parashikim. Disa shembuj të Features Static janë çmime që një restorant ka fituar ose pajisje të ofruara nga një hotel (si Wi-Fi falas, miqësore për kafshët shtëpiake ose qendra palestër). Karakteristikat e përdoruesit mblidhen në kohë reale ndërsa përdoruesit shfletojnë faqen.Ne i ruajmë ato në ScyllaDB në mënyrë që të marrim pyetje të shpejta.Disa shembuj të karakteristikave të përdoruesit janë hotelet e shikuara gjatë 30 minutave të fundit, restorantet e shikuara gjatë 24 orëve të fundit, ose komente të dorëzuara gjatë 30 ditëve të fundit. Teknologjitë që fuqizojnë platformën e vizitorëve ScyllaDB është thelbi i Platformës së Vizitorëve. Ne përdorim microservices Spring Boot të bazuara në Java për të ekspozuar platformën tek klientët tanë. Kjo implementohet në AWS ECS Fargate. Ne drejtojmë Apache Spark në Kubernetes për punët tona të përditshme të ruajtjes së të dhënave, punët tona offline në online. Pastaj ne i përdorim ato punë për të ngarkuar të dhënat nga depoja jonë e të dhënave offline në ScyllaDB në mënyrë që ato të jenë në dispozicion në faqen e drejtpërdrejtë. Ne gjithashtu përdorim Amazon Kinesis për përpunimin e ngjarjeve të gjurmimit të përdoruesve të transmetimit. Fluksi i të dhënave të platformës së vizitorëve Grafiku i mëposhtëm tregon se si të dhënat rrjedhin nëpër platformën tonë në katër faza: prodhojnë, marrin, organizojnë dhe aktivizojnë. Të dhënat prodhohen nga faqja jonë e internetit dhe aplikacionet tona të lëvizshme. Disa nga këto të dhëna përfshijnë grafikun tonë të identitetit të përdoruesit të pajisjeve, ngjarjet e ndjekjes së sjelljes (të tilla si shikimet e faqeve dhe klikimet) dhe ngjarjet e transmetimit që shkojnë përmes Kinesis. Të dhënat në ScyllaDB ruhen në dy hapësira kyçe: Hapësira kyçe Visitor Core, e cila përmban Grafin e Identitetit të Vizitorit Hapësira e çelësave Metrike e Vizitorit, e cila përmban Fakte dhe Metrika (gjërat që njerëzit bënë ndërsa shfletonin faqen) Ne përdorim proceset e përditshme të ETL për të ruajtur dhe pastruar të dhënat në platformë.Ne prodhojmë Produktet e të Dhënave, të vulosura çdo ditë, në magazinën tonë të të dhënave offline – ku ato janë në dispozicion për integrime të tjera dhe tubacione të tjera të të dhënave për t’u përdorur në përpunimin e tyre. Këtu është një vështrim në Platformën e Vizitorëve nga numrat: Pse dy baza të dhënash? Ne përdorim TTLs afat të shkurtër për të parandaluar rritjen e të dhënave në bazën e të dhënave në internet për një periudhë të pacaktuar, dhe punët tona të ruajtjes së të dhënave sigurojnë që ne mbajmë vetëm të dhënat e aktivitetit të përdoruesit për vizitorët e vërtetë. Magazina jonë e të dhënave offline ruan të dhënat historike të përdorura për raportimin, krijimin e produkteve të tjera të të dhënave dhe trajnimin e Modeleve tona ML. Ne nuk duam që proceset e të dhënave në shkallë të gjerë të ndikojnë në performancën e faqes sonë të gjallë, kështu që kemi dy baza të dhënash të ndara të përdorura për dy qëllime të ndryshme. Platforma e Vizitorëve Microservices Ne përdorim 5 microservices për Platformën e Vizitorëve: Visitor Core menaxhon grafikun e identitetit të përdoruesit ndërmjet pajisjeve bazuar në cookies dhe ID-të e pajisjeve. Vizitor Metric është motori ynë i pyetjeve, i cili na jep mundësinë për të ekspozuar faktet dhe metrikat për vizitorët specifikë.Ne përdorim një gjuhë specifike të domain-it të quajtur gjuha e pyetjes së vizitorëve, ose VQL. Ky shembull VQL ju lejon të shihni faktet e fundit të klikimeve të tregtisë gjatë tri orëve të fundit. Vizitor Publisher dhe Visitor Saver menaxhojnë rrugën e shkrimit, duke shkruar të dhëna në platformë. Përveç ruajtjes së të dhënave në ScyllaDB, ne gjithashtu transmetojmë të dhëna në depo të të dhënave offline. Vizitor Composite thjeshton publikimin e të dhënave në punët e përpunimit të batch. Ajo abstraktet Vizitor Saver dhe Vizitor Core për të identifikuar vizitorët dhe për të publikuar faktet dhe metrikat në një thirrje të vetme API. Roundtrip Microservice Latency Përshtypje Ky grafik ilustron se si vonesat tona të microservices mbeten të qëndrueshme me kalimin e kohës. Latenca mesatare është vetëm 2.5 milisekonda, dhe P999 është nën 12.5 milisekonda.Kjo është performancë mbresëlënëse, veçanërisht duke pasur parasysh se ne trajtojmë mbi 1 miliard kërkesa në ditë. Klientët tanë të microservices kanë kërkesa të rrepta të vonesës. 95% e thirrjeve duhet të përfundojnë në 12 milisekonda ose më pak. Fjalë kyçe Latency Këtu është një imazh i shpejtë i performancës së ScyllaDB gjatë tre ditëve. Në kulm, ScyllaDB po merret me 340,000 operacione në sekondë (duke përfshirë shkrimet, leximet dhe fshirjet) dhe CPU-ja është duke lëvizur në vetëm 21%. ScyllaDB ofron shkrime mikrosekondash dhe lexime milisekondash për ne. ky nivel i performancës së shpejtë është pikërisht arsyeja pse ne zgjodhëm ScyllaDB. Ndarja e të dhënave në ScyllaDB Kjo imazh tregon se si ne ndajmë të dhënat në ScyllaDB. Vizitor Metric Keyspace ka dy tabela: Fact dhe Raw Metrics. Çelësi kryesor në tabelën Fact është Visitor GUID, Type Fact dhe Created At Date. Çelësi i ndarjes së përbërë është Visitor GUID dhe Fact Type. Çelësi i grumbullimit është Created At Date, i cili na lejon të rendisim të dhënat në ndarje sipas datës. Kolona e atributeve përmban një objekt JSON që përfaqëson ngjarjen që ndodhi atje. Disa shembuj të fakteve janë Termat e kërkimit, Shikimet e Faqes dhe Rezervimet. Ne përdorim Strategjinë e Niveluar të Kompaktimit të ScyllaDB-së sepse: Është optimizuar për pyetjet e rangut Menaxhon kardinalitetin e lartë shumë mirë Është më mirë për ngarkesat e punës me lexim të rëndë, dhe ne kemi rreth 2-3X më shumë lexime sesa shkrime Pse ScyllaDB? Zgjidhja jonë u ndërtua fillimisht duke përdorur Cassandra on-prem. Por si shkalla u rrit, po ashtu edhe ngarkesa operative. Kishte nevojë për mbështetje të dedikuar të operacioneve në mënyrë që ne të menaxhojmë përmirësimet e bazës së të dhënave, backups, etj. Gjithashtu, zgjidhja jonë kërkon vonesa shumë të ulëta për komponentët kryesorë. Sistemi ynë i Menaxhimit të Identitetit të Përdoruesit duhet të identifikojë përdoruesin brenda 30 milisekondave – dhe për personalizimin më të mirë, ne kërkojmë që platforma jonë e ndjekjes së ngjarjeve të përgjigjet në 40 milisekonda. Është thelbësore që zgjidhja jonë të mos bllokojë renditjen e faqes, kështu që SLA-t tona janë shumë të Ne drejtuam një Proof of Concept me ScyllaDB dhe gjetëm se transmetimi ishte shumë më i mirë se Cassandra dhe ngarkesa operative u eliminua. Ne donim një opsion të menaxhuar plotësisht, kështu që u zhvendosëm nga Cassandra në ScyllaDB Cloud, duke ndjekur një strategji të dyfishtë të shkrimit. Kjo na lejoi të zhvendoseshim me zero kohën e ndërprerjes ndërsa menaxhonim 40,000 operacione ose kërkesa në sekondë. Më vonë, u zhvendosëm nga ScyllaDB Cloud në modelin "Merr llogarinë tënde" të ScyllaDB, ku mund të keni ekipin e ScyllaDB të vendosë bazën e të dhënave ScyllaDB në llogarinë tuaj AWS. Kjo na dha performancë të përmirësuar si dhe privatësi më të mirë të të dhënave. Ky diagram tregon se si duket implementimi BYOA i ScyllaDB. Në qendër të diagramit, ju mund të shihni një grumbull 6-node ScyllaDB që punon në EC2. ScyllaDB Monitor na jep Grafana dashboards si dhe Prometheus metrics. ScyllaDB Manager kujdeset për automatizimin e infrastrukturës si aktivizimi i backups dhe riparimeve. Me këtë vendosje, ScyllaDB mund të vendosen së bashku shumë afër microservices tona për të na dhënë vonesa edhe më të ulëta, si dhe shumë më të larta të transmetimit dhe performancës. Për të përmbledhur, shpresoj që tani të keni një kuptim më të mirë të arkitekturës sonë, teknologjive që e fuqizojnë platformën dhe se si ScyllaDB luan një rol kritik në lehtësimin e menaxhimit të shkallës jashtëzakonisht të lartë të TripAdvisor. Për Cynthia Dunlop Cynthia është Drejtore e Përgjithshme e Strategjisë së Përmbajtjes në ScyllaDB. Ajo ka shkruar për zhvillimin e softuerit dhe inxhinierinë e cilësisë për më shumë se 20 vjet.