See the engineering behind real-time personalization at Tripadvisor’s massive (and rapidly growing) scale Tripadvisor cenšas to novērtēt, tiklīdz jūs sazināties ar vietni, un pēc tam piedāvā jums arvien svarīgāku informāciju par katru klikšķi – milisekundēs. Šajā rakstā Dean Poulin (Tripadvisor datu inženierijas vadītājs AI pakalpojumu un produktu komandā) sniedz pārskatu par to, kā viņi veic šo personalizāciju. Tas ir balstīts uz šādu AWS re:Invent runu: Pre-Trip orientācija Ar Deana vārdiem... Tripadvisor ir dibināts 2000. gadā un ir kļuvis par pasaules līderi ceļojumos un viesmīlībā, palīdzot simtiem miljoniem ceļotāju plānot perfektu ceļojumu. Tripadvisor gūst vairāk nekā 1,8 miljardu ASV dolāru ieņēmumus un ir publiski tirgots uzņēmums NASDAQ biržā. Jebkurā dienā mūsu sistēma apstrādā vairāk nekā 2 miljardus pieprasījumu no 25 līdz 50 miljoniem lietotāju. Katrs noklikšķinājums, ko jūs veicat TripAdvisor, tiek apstrādāts reāllaikā. Aiz tā mēs izmantojam mašīntulkošanas modeļus, lai sniegtu personalizētus ieteikumus – padarot jūs tuvāk šim ideālajam ceļojumam. Šīs personalizācijas dzinēja centrā ir ScyllaDB, kas darbojas AWS. Tas ļauj mums nodrošināt milisekundes aizkavēšanos tādā mērogā, kādu sasniedz tikai dažas organizācijas. . 425K operations per second on ScyllaDB with P99 latencies for reads and writes around 1-3 milliseconds Mēs izpētīsim, kā mēs palīdzam ceļotājiem atklāt visu, kas viņiem nepieciešams, lai plānotu savu perfektu braucienu: vai tas ir slēpto dārgakmeņu atklāšana, jāredz atrakcijas, neaizmirstamas pieredzes vai labākās vietas, kur palikt un ēst. Personalizēta ceļojumu plānošana Tiklīdz jūs nokļūstat Tripadvisor mājas lapā, Tripadvisor jau zina, vai esat pārtikas mīļotājs, piedzīvojumu cienītājs vai pludmales mīļotājs - un jūs redzat spot-on ieteikumus, kas šķiet personalizēti jūsu interesēm. Kad jūs pārlūkojat TripAdvisor, mēs sākam personalizēt to, ko redzat, izmantojot mašīntulkošanas modeļus, kas aprēķina rezultātus, pamatojoties uz jūsu pašreizējo un iepriekšējo pārlūkošanas darbību. Mēs iesakām viesnīcas un pieredzi, par kurām mēs domājam, ka jūs varētu interesēt. Mēs šķirojam viesnīcas, pamatojoties uz jūsu personiskajām vēlmēm. Mēs iesakām populāras apskates vietas netālu no viesnīcas, kuru pārlūkojat. Tripadvisor modelis kalpo arhitektūrai Tripadvisor darbojas uz simtiem neatkarīgi mērogojamu mikropakalpojumu Kubernetes on-prem un Amazon EKS. Šis vārtu serviss no klientu pakalpojumiem iegūst vairāk nekā 100 ML modeļus, kas ļauj mums veikt A/B testus, lai atrastu labākos modeļus, izmantojot mūsu eksperimentu platformu. ML modeļus galvenokārt izstrādā mūsu datu zinātnieki un mašīntulkošanas inženieri, izmantojot Jupyter piezīmju grāmatiņas Kubeflow. Custom Feature veikals Funkciju veikals galvenokārt kalpo lietotāju funkcijām un statiskām funkcijām. Statiskās funkcijas tiek glabātas Redis, jo tās nemainās ļoti bieži.Mēs katru dienu darbojamies ar datu cauruļvadiem, lai lejupielādētu datus no mūsu bezsaistes datu noliktavas mūsu Funkciju veikalam kā statiskām funkcijām. Lietotāja funkcijas tiek nodrošinātas reālā laikā, izmantojot platformu, ko sauc par Apmeklētāju platformu. . we do not need a caching layer because ScyllaDB is so fast Mūsu funkciju veikals nodrošina līdz pat 5 miljoniem statisko funkciju sekundē un pusmiljonu lietotāju funkciju sekundē. Kas ir ML funkcija? Funkcijas ir ML modeļu ievades mainīgās daļas, kuras tiek izmantotas, lai veiktu prognozi. Daži Static funkciju piemēri ir balvas, ko restorāns ir ieguvis, vai viesnīcas piedāvātās ērtības (piemēram, bezmaksas Wi-Fi, mājdzīvnieku draudzīgs vai fitnesa centrs). Lietotāja funkcijas tiek apkopotas reālā laikā, kad lietotāji pārlūko vietni. Mēs tos glabājam ScyllaDB, lai mēs varētu saņemt zibens ātrus vaicājumus.Daži lietotāja funkciju piemēri ir viesnīcas, kas apskatītas pēdējo 30 minūšu laikā, restorāni, kas apskatīti pēdējo 24 stundu laikā, vai atsauksmes, kas iesniegtas pēdējo 30 dienu laikā. Tehnoloģijas, kas atbalsta apmeklētāju platformu ScyllaDB ir apmeklētāju platformas pamatā. Mēs izmantojam Java pamatotus Spring Boot mikroservisa pakalpojumus, lai atklātu platformu mūsu klientiem. Tas tiek ieviests AWS ECS Fargate. Mēs darbojamies ar Apache Spark Kubernetes mūsu ikdienas datu saglabāšanas darbos, mūsu bezsaistes darbos tiešsaistē. Tad mēs izmantojam šos darbus, lai augšupielādētu datus no mūsu bezsaistes datu noliktavas ScyllaDB, lai tie būtu pieejami tiešraidē. Mēs arī izmantojam Amazon Kinesis, lai apstrādātu lietotāju straumēšanas izsekošanas notikumus. Apmeklētāju platformas datu plūsma Nākamais grafiks parāda, kā dati plūst caur mūsu platformu četros posmos: ražot, uzņemt, organizēt un aktivizēt. Dati tiek ražoti mūsu tīmekļa vietnē un mūsu mobilajās lietotnēs.Daži no šiem datiem ietver mūsu Cross-Device Lietotāja identitātes grafiku, uzvedības izsekošanas notikumus (piemēram, lapas skatījumus un klikšķus) un straumēšanas notikumus, kas iet caur Kinesis. Apmeklētāju platformas mikroservisi tiek izmantoti, lai ievāktu un organizētu šos datus.Dati ScyllaDB tiek glabāti divās atslēgu telpās: Apmeklētāja kodola atslēgvārdu telpa, kurā ir Apmeklētāja identitātes grafiks Apmeklētāju metriskā atslēgvārdu telpa, kas satur faktus un metrikas (tas, ko cilvēki darīja, kad viņi pārlūkoja vietni) Mēs izmantojam ikdienas ETL procesus, lai uzturētu un notīrītu datus platformā.Mēs katru dienu ražojam datu produktus, kas ir nostiprināti mūsu bezsaistes datu noliktavā - kur tie ir pieejami citām integrācijām un citiem datu cauruļvadiem, kurus var izmantot to apstrādē. Šeit ir skatījums uz apmeklētāju platformu pēc skaitļiem: Kāpēc divas datubāzes? Mūsu tiešsaistes datu bāze ir vērsta uz reāllaika, tiešraides tīmekļa vietnes datplūsmu. ScyllaDB pilda šo lomu, nodrošinot ļoti zemu aizkavēšanos un augstu caurlaidību. Mēs izmantojam īstermiņa TTL, lai novērstu tiešsaistes datu bāzes datu augšanu uz nenoteiktu laiku, un mūsu datu saglabāšanas darbi nodrošina, ka mēs saglabājam tikai lietotāju aktivitātes datus reāliem apmeklētājiem. Tripadvisor.com saņem daudz bot datplūsmas, un mēs nevēlamies uzglabāt viņu datus un mēģināt personalizēt robotus - tāpēc mēs dzēšam un attīrām visus šos datus. Mūsu bezsaistes datu noliktava saglabā vēsturiskos datus, ko izmanto ziņošanai, citu datu produktu izveidei un mūsu ML modeļu apmācībai.Mēs nevēlamies, lai liela mēroga bezsaistes datu procesi ietekmētu mūsu tiešraides vietnes sniegumu, tāpēc mums ir divas atsevišķas datu bāzes, ko izmanto diviem dažādiem mērķiem. Microservices apmeklētāju platforma Mēs izmantojam 5 mikroservisi apmeklētāju platformai: Visitor Core pārvalda lietotāju identitātes grafiku starp ierīcēm, pamatojoties uz sīkdatnēm un ierīces ID. Visitor Metric ir mūsu vaicājumu dzinējs, un tas nodrošina mums iespēju atklāt faktus un rādītājus konkrētiem apmeklētājiem. Mēs izmantojam domēna specifisko valodu, ko sauc par apmeklētāju vaicājumu valodu, vai VQL. Šis piemērs VQL ļauj jums redzēt jaunākos tirdzniecības klikšķu faktus pēdējo trīs stundu laikā. Visitor Publisher un Visitor Saver apstrādā rakstīšanas ceļu, rakstot datus platformā. Papildus datu saglabāšanai ScyllaDB, mēs arī straumējam datus uz bezsaistes datu noliktavu. Visitor Composite vienkāršo datu publicēšanu partiju apstrādes darbos.Tas abstraktu Visitor Saver un Visitor Core, lai identificētu apmeklētājus un publicētu faktus un rādītājus vienā API zvanā. Roundtrip Microservice aizkavēšanās Šis grafiks parāda, kā mūsu mikroservisa aizkavēšanās laika gaitā paliek stabila. Vidējais aizkavēšanās laiks ir tikai 2,5 milisekundes, un mūsu P999 ir mazāks par 12,5 milisekundēm. Mūsu mikroservisa klientiem ir stingras aizkavēšanās prasības. 95% zvanu jāpabeidz 12 milisekundēs vai mazāk. ScyllaDB aizkavēšanās Šeit ir skats uz ScyllaDB sniegumu trīs dienu laikā. Pīķa laikā ScyllaDB apstrādā 340 000 operāciju sekundē (ieskaitot ierakstus, lasījumus un dzēšanu), un CPU svārstās tikai 21%. ScyllaDB sniedz mums mikrosekundes rakstus un milisekundes lasījumus.Šis ātrās veiktspējas līmenis ir tieši tas, kāpēc mēs izvēlējāmies ScyllaDB. Datu sadalīšana ScyllaDB Šis attēls parāda, kā mēs dalām datus ScyllaDB. Visitor Metric Keyspace ir divas tabulas: Fact un Raw Metrics. Galvenā atslēga Fact tabulā ir Visitor GUID, Fact Type un Created At Date. Sastāvdaļas nodalījuma atslēga ir Visitor GUID un Fact Type. Klusēšanas atslēga ir Created At Date, kas ļauj mums sakārtot datus nodalījumos pēc datuma. Atribūtu kolonnā ir JSON objekts, kas pārstāv notikumu, kas tur notika. Mēs izmantojam ScyllaDB Leveled Compaction stratēģiju, jo: Tas ir optimizēts diapazona vaicājumiem Ļoti labi iztur augstu kardinalitāti Tas ir labāk lasāmām darba slodzēm, un mums ir aptuveni 2-3 reizes vairāk lasījumu nekā rakstu Kāpēc ScyllaDB? Mūsu risinājums sākotnēji tika izveidots, izmantojot Cassandra on-prem. Bet, palielinot apjomu, palielinājās arī operatīvais slogs. Tam bija vajadzīgs specializēts operāciju atbalsts, lai mēs varētu pārvaldīt datu bāzes atjauninājumus, dublējumus utt. Arī mūsu risinājums prasa ļoti zemu aizkavēšanos pamatkomponentiem. Mūsu lietotāju identitātes pārvaldības sistēmai ir jāidentificē lietotājs 30 milisekundēs – un labākās personalizācijas nolūkā mums ir nepieciešama mūsu notikumu izsekošanas platforma, lai reaģētu 40 milisekundēs. Ir svarīgi, lai mūsu risinājums neaizkavētu lapas rādīšanu, tāpēc mūsu SLA ir ļoti zems. Mēs vadījām koncepcijas pierādījumu ar ScyllaDB un konstatējām, ka caurlaidība ir daudz labāka nekā Cassandra, un darbības slogs tika novērsts. Mēs vēlējāmies pilnībā pārvaldītu opciju, tāpēc mēs pārcēlāmies no Cassandra uz ScyllaDB Cloud, ievērojot dubultā rakstīšanas stratēģiju. kas ļāva mums pārcelt ar nulles pārtraukuma laiku, apstrādājot 40 000 operācijas vai pieprasījumus sekundē. Šī diagramma parāda, kā izskatās ScyllaDB BYOA izvietošana. Diagrammas centrā var redzēt 6 mezglu ScyllaDB klasteri, kas darbojas EC2. ScyllaDB Monitor sniedz mums Grafana instrumentu plāksnes, kā arī Prometheus metrikas. ScyllaDB Manager rūpējas par infrastruktūras automatizāciju, piemēram, aktivizējot dublējumus un remontus. Ar šo izvietošanu ScyllaDB varētu tikt ievietots ļoti tuvu mūsu mikroservisiem, lai sniegtu mums vēl zemākas aizkavēšanās, kā arī daudz lielāku caurlaidību un veiktspēju. Apkopojot, es ceru, ka jums tagad ir labāka izpratne par mūsu arhitektūru, tehnoloģijām, kas atbalsta platformu, un to, kā ScyllaDB spēlē kritisku lomu, ļaujot mums risināt Tripadvisor ārkārtīgi lielo mērogu. Par Cynthia Dunlop Cynthia ir ScyllaDB satura stratēģijas vecākais direktors, kas vairāk nekā 20 gadus raksta par programmatūras izstrādi un kvalitātes inženieriju.