See the engineering behind real-time personalization at Tripadvisor’s massive (and rapidly growing) scale Хэрэв та вэбсайттай холбоотой байх үед Tripadvisor нь энэ талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи талаархи. Энэ нийтлэлд, Dean Poulin (Tripadvisor-ийн AI үйлчилгээ, бүтээгдэхүүний баг дахь Tripadvisor-ийн мэдээллийн инженерийн тэргүүлэгч) энэ персонализацийг хэрхэн дэмжих талаар дэлгэрэнгүй үздэг. Dean Tripadvisor-ийн их (ийг хурдан нэмэгдэж буй) масштаб дээр тавтай морилно уу. Энэ нь дараах AWS re:Invent talk дээр суурилсан байна: Pre-Trip аялал Dean-ийн үгс ... Tripadvisor нь 2000 онд байгуулагдсан Tripadvisor нь аялал жуулчлалын, зочид буудлын дэлхий даяар тэргүүлэх компани юм. Tripadvisor нь $1.8 млрд-ийн арилжаалалтай бөгөөд NASDAQ-ийн борлуулалттай компани юм. Өнөөдөр бид 2800 гаруй оюутнуудын тавтай морилно уу, манай платформ нь долоо хоногт 400 сая тусгай оюутнуудад зориулж байна. Бүх өдөрт бидний систем нь 25 - 50 сая хэрэглэгчдийн 2 млрд-аас дээш асуултуудыг боловсруулах болно. Tripadvisor дээр хийж байгаа бүх клик нь жинхэнэ цаг хугацаагаар боловсруулсан байна. Үүнээс гадна, бид машин суралцах загваруудыг ашиглаж, өөрчлөн зөвлөгөөг хангахын тулд танд тохиромжтой аялалтай байх болно. Энэ персонализацийн хөдөлгүүр нь ScyllaDB-ийг AWS дээр ажиллуулж байна. Энэ нь бид маш бага аж ахуйн нэгжын хангалттай хэмжээгээр миллисекунд давтамж хангах боломжийг олгодог. . 425K operations per second on ScyllaDB with P99 latencies for reads and writes around 1-3 milliseconds Би Tripadvisor-ийн ScyllaDB, AWS, Real-Time машин суралцах хүчин чадал ашиглан өөрчлөн санал болгож авахын тулд хэрхэн хуваалцах болно. Бид тавтай морилно уу тавтай морилно уу тавтай морилно уу тавтай морилно уу, гайхамшигтай туршлага, тавтай морилно уу, эсвэл тавтай морилно уу хамгийн шилдэг газар. Энэ [арт] нь тавтай морилно уу, тавтай морилно уу, тавтай морилно уу вэ? Хэрэглэгчийн Trip Planning Хэрэв та Tripadvisor-ийн эхний вэбсайт дээр ирж байгаа бол Tripadvisor-ийн тавтай морилно уу та foodie, adventurer, эсвэл beach lover юм гэж мэддэг - мөн та өөрийн сонирхолтой хүмүүст зориулсан өөрчлөн санал болгож байна. Хэрэв та Tripadvisor-ийг зочилж байгаа бол бид машин суралцах загварууд ашиглан танд үзсэн зүйлсийг өөрчилж эхэлнэ. Энэ нь таны одоогийн болон өмнөх суралцах үйл ажиллагаа дээр суурилсан үнэлгээтэй. Бид танд сонирхолтой гэж бодож байгаа оюутнуудыг санал болгож байна. Бид таны хувийн тохиргоог дээр суурилсан оюутнуудыг хуваалцах болно. Бид үзсэн оюутнуудын ойролцоо алдартай оюутнуудыг санал болгож байна. Эдгээр бүх оюутнуудыг таны хувийн тохиргооны болон өмнөх суралцах үйл ажиллагаа дээр суурилсан байна. Tripadvisor-ийн загвар үйлчилгээний архитектур Tripadvisor нь Kubernetes on-prem болон Amazon EKS-д өөрсдийн масштабируулсан микросервисах зуун дээр ажилладаг. Манай ML Model Serving Platform нь энэ микросервисах нэг дамжуулан үзэж байна. Энэ галт тэрэгний үйлчилгээ нь 100 гаруй ML-ийн загварууд нь Customer Services-ээс олж авах боломжтой бөгөөд энэ нь бидний туршилтын платформ ашиглан хамгийн сайн загварууд олж авахын тулд A / B тестг ажиллуулах боломжийг олгодог. ML загварууд нь ихэвчлэн Kubeflow дээр Jupyter Notebooks ашиглан манай Data Scientists болон Machine Learning Engineers-ийн боловсруулсан. Тэд ML Flow ашиглан удирдах, сургаж, Kubernetes-д Seldon Core дээр ашигладаг. Бидний Custom Feature Store нь ML загваруудтай шинж чанарыг хангах боломжийг олгодог. Custom Feature дэлгүүр Feature Store нь ихэвчлэн хэрэглэгчийн шинж чанар, статик шинж чанартай. Статик шинж чанар Redis-д хадгалж байна, учир нь ихэвчлэн өөрчилж биш юм. Бид өдөр бүр өгөгдлийн хоолой ажиллуулахын тулд офлайн өгөгдлийн хадгаламжийн өгөгдлийг статик шинж чанартай хэлбэрээр бидний Feature Store-д татаж авах. Хэрэглэгчийн онцлог нь Visitor Platform гэж нэрлэгддэг платформ дамжуулан үнэгүй хугацаагаар нийлүүлж байна. Бид ScyllaDB-ийн эсрэг динамик CQL асуултуудыг гүйцэтгэдэг. . we do not need a caching layer because ScyllaDB is so fast Манай Feature Store нь секундын дотор 5 сая статик шинж чанарыг, секундын дотор 500,000 хэрэглэгчийн шинж чанарыг хангах болно. ML онцлог нь юу вэ? Функцүүд ML-ийн загваруудтай хязгаарлагч юм. Статик шинж чанар, хэрэглэгчийн шинж чанар байдаг. Статик шинж чанарын зарим жишээ нь рестораныг олж авсан шагналт, эсвэл зочид буудлын санал болгож буй тоног төхөөрөмжүүд юм (жишээ нь үнэгүй Wi-Fi, гэрийн тэжээмэл, фитнес төв). Хэрэглэгчийн шинж чанарыг хэрэглэгчид вэбсайтаас арилгах үед жинхэнэ цаг хугацаанд цуглуулдаг. Бид тэднийг ScyllaDB-д хадгалахын тулд бид хурдан асуулт авах боломжтой. Хэрэглэгчийн шинж чанарын зарим жишээ нь сүүлийн 30 минутын дотор үзсэн оюутнууд, сүүлийн 24 цагийн дотор үзсэн ресторан, эсвэл сүүлийн 30 хоногийн дотор илгээсэн үнэлгээ юм. Технологийн дэмжлэг үзүүлэгч платформ ScyllaDB нь Visitor Platform-ийн үндсэн юм. Бид Java-д суурилсан Spring Boot microservices ашигладаг. Энэ нь AWS ECS Fargate дээр суурилсан байна. Бид Apache Spark Kubernetes дээр өдөр тутмын өгөгдлийн хадгалах ажил, офлайн-д онлайн ажил хийхэд ажиллаж байна. Дараа нь бид офлайн өгөгдлийн хадгаламжийн өгөгдлийг ScyllaDB-д татаж авахын тулд энэ ажил ашигладаг. Бид жинхэнэ сайт дээр боломжтой байхын тулд Amazon Kinesis-ийг ашигладаг. Хэрэглэгчийн платформ Data Flow Дараа нь график бидний платформ дамжуулан өгөгдлийг 4 үе шаттай: үйлдвэрлэдэг, хэрэглэдэг, зохион байгуулж, идэвхжүүлэх. Бидний вэбсайт болон бидний гар утасны апп-ийн дамжуулан өгөгдөл үйлдвэрлэдэг. Эдгээр өгөгдлийн зарим нь бидний Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэгчийн Хэрэглэг Visitor Platform-ийн microservices нь энэ өгөгдлийг олж, зохион байгуулж ашигладаг. ScyllaDB-д өгөгдөл хоёр ключ газар дээр хадгалж байна: Visitor Core KeySpace, Visitor Identity Graph-ийг агуулсан Visitor Metric KeySpace, Facts and Metrics (Хэрэглэгчид вэбсайт үзэх үед хийж байгаа зүйлс) Бид платформ дахь өгөгдлийг хадгалах, цэвэрлэхэд өдөр тутмын ETL үйл явцыг ашигладаг. Бид онлайн өгөгдлийн хадгалалд өдөр тутмын хэвлэсэн өгөгдлийн бүтээгдэхүүнийг үйлдвэрлэдэг. Энд тооны дагуу Visitor Platform-ийг үзнэ үү: Дараа нь 2 Databases? Бидний онлайн мэдээллийн сан нь жинхэнэ, жинхэнэ вэбсайтын трафик дээр төвлөрсөн юм. ScyllaDB нь маш бага давтамж, өндөр дамжуулалт хангахын тулд энэ үйл ажиллагаа явуулж байна. Бид онлайн мэдээллийн сан дахь өгөгдлийн хязгааргүй хугацааны өсөлтийн урьдчилан сэргийлэх short-term TTL-ийг ашигладаг бөгөөд бидний өгөгдлийн хадгалах үйл ажиллагаа нь зөвхөн хэрэглэгчийн үйл ажиллагааны өгөгдлийг авлага. Tripadvisor.com нь ихэнх бот трафиктэй байдаг, бид тэдний өгөгдлийг хадгалахыг хүсдэггүй, ботоос персонализуулахыг хүсдэг. Тиймээс бид энэ бүх өгөгдлийг илрүүлэх, очиж байна. Бидний офлайн өгөгдлийн сав баглаа боодол нь бүртгэл хийх, бусад өгөгдлийн бүтээгдэхүүний үүсгэх, ML Моделийн сургалтыг ашигласан түүхэн өгөгдлийг хадгалж байна. Бид жинхэнэ вэбсайтын гүйцэтгэлийн үр нөлөөтэй томъёо офлайн өгөгдлийн үйл явцыг хүсдэггүй, Тиймээс бид хоёр тусгай өгөгдлийн баазын хувьд ашиглаж байна. Ажлын платформ Microservices Бид 5 microservices нь Visitor Platform ашигладаг: Visitor Core Cookie болон төхөөрөмжийн ID дээр суурилсан cross-device user identity graph-ийг удирдах болно. Visitor Metric нь бидний асуултын хөдөлгүүрт юм. Энэ нь тодорхой зочдын талаархи мэдлэг, метрикуудыг илрүүлэх боломжийг олгодог. Бид visitor query language, эсвэл VQL гэж нэрлэгддэг домонд тусгай хэл ашигладаг. Энэ жишээ нь VQL-ийг өнгөрсөн гурван цагийн дотор хамгийн сүүлийн үеийн арилжааны хайлтын мэдлэг үзнэ үү. Visitor Publisher болон Visitor Saver хэвлэх арга зам, платформенд өгөгдлийг бичдэг. ScyllaDB-д өгөгдлийг хадгалах гадна, бид өгөгдлийг офлайн өгөгдлийг хадгалах болно. Энэ нь Amazon Kinesis-тэй хийж байна. Visitor Composite нь барааны боловсруулах ажиллагаанд өгөгдлийг хэвлэхэд хялбардаг. Энэ нь Visitor Saver болон Visitor Core-ийг илрүүлэх, харахын тулд харахын тулд харахын тулд харахын тулд харахын тулд харахын тулд харахын тулд харахын тулд харахын тулд харахын тулд харахын тулд харахын тулд харахын тулд харахын тулд харахын тулд харахын тулд. Roundtrip Microservice Латенци Эдгээр график нь бидний микрослужын латенцийг цаг хугацаагаар тогтвортой байлгахын тулд хэрхэн илрүүлдэг. Өнгөрсөн давтамж нь зөвхөн 2.5 миллисекунд бөгөөд манай P999 нь 12.5 миллисекунд дор юм. Энэ нь гайхалтай хүчин чадал юм, ялангуяа бид өдөрт 1 млрд-ээс дээш хүсэлтийг боловсруулдаг. Бидний микросервис хэрэглэгчдэд строгой давтамж шаардлагыг байна. 95% -ийг 12 миллисекунд эсвэл бага байх ёстой. Тэд энэээс дээш байгаа бол бид хуваалцсан байх ёстой. ScyllaDB Латенци Энд ScyllaDB-ийн 3 хоногийн турш гүйцэтгэлийн хурдасгаж байна. Өнгөрсөн үед ScyllaDB секундын дотор 340,000 үйл явцыг боловсруулсан байна (ширгээ, унших, илгээх зэрэг), CPU нь зөвхөн 21% -ийг хоорондоо байна. Энэ нь үйл ажиллагаа явуулж буй өндөр түвшинд юм! ScyllaDB нь микросекунд бичлэг, миллисекунд унших нь бидэнд хүргэдэг. Энэ түвшин хурдан гүйцэтгэл нь ScyllaDB-ийг сонгоно. ScyllaDB-д өгөгдлийг хуваалцах Энэ зураг нь ScyllaDB-д өгөгдлийг хуваалцахын тулд хэрхэн үздэг. Visitor Metric Keyspace нь хоёр ширээтэй: Fact болон Raw Metrics. Fact ширээгийн үндсэн ширээг Visitor GUID, Fact Type, and Created At Date юм. Композицийн хуваалцны ширээг Visitor GUID болон Fact Type юм. Clustering ширээг Date дээр үүсгэсэн бөгөөд энэ нь өгөгдлийг хуваалцах боломжийг олгодог. Атрибутын ширээ JSON объектыг агуулдаг. Зарим жишээ нь хайлтын нөхцөл, Page Views, болон Bookings юм. Бид ScyllaDB-ийн Leveled Compaction Стратегийг ашиглаж байна, учир нь: Энэ нь range query-д optimized байна Энэ нь өндөр cardinality маш сайн ажиллуулдаг Энэ нь унтраах хүчтэй ажлын ачаалалтай, бид 2-3X илүү унтраах байна ScyllaDB нь юу вэ? Бидний шийдэл эхлээд Cassandra on-prem ашиглан үүсгэгдсэн юм. Гэсэн хэдий ч урсгал нэмэгдэж, үйл ажиллагааны ачаалал нь нэмэгдэж байна. Бидний шийдэл нь базасны шинэчлэл, баглаа боодол, гэх мэт удирдахэд зориулсан үйл ажиллагааны дэмжлэгийг шаарддаг. Мөн бидний шийдэл нь үндсэн бүрэлдэхүүн хэсгүүдийн хувьд маш бага давтамж хэрэгтэй. Бидний User Identity Management систем нь 30 миллисекунд дотор хэрэглэгчдэд идентичлэх ёстой. -ийг хамгийн сайн персонализацид, бидний Event Tracking платформ нь 40 миллисекунд хариулахыг шаарддаг. Бидний шийдэл хуудсыг үүсгүүлдэггүй, Тиймээс бидний SLA-ийн маш бага байдаг. Cassandra нь бид зөөлөн сав баглаа боодол гүйцэтгэлийн үр дүнтэй нөлөө Бид ScyllaDB-тэй Proof of Concept ажиллуулсан бөгөөд Cassandra-ээс илүү сайн дамжуулалтыг олж авсан бөгөөд үйл ажиллагааны ачааллыг олж авсан. ScyllaDB нь хамгийн бага боломжгүй давтамжтай маш хурдан жинхэнэ үйлчилгээний мэдээллийн санг санал болгож байна. Бид бүрэн менежментийн сонголт хүссэн бөгөөд бид Cassandra-аас ScyllaDB Cloud-д дамжуулан хоёр давтамж стратегийн дагуу дамжуулан дамжуулан. Энэ нь бид 40,000 үйл явцыг эсвэл асуултанд секундын дотор нунтагтай дамжуулан дамжуулан дамжуулан дамжуулан боломжийг олгодог. Дараа нь ScyllaDB Cloud-аас ScyllaDB-ийн "Бие өөрийн данс авах" загвар руу дамжуулан ScyllaDB баг нь ScyllaDB-ийн өгөгдлийг өөрийн AWS данс руу хуваалцах боломжтой. Энэ нь бидний гүйцэтгэлийн сайжрууд, өгөгдлийн аюулгүй байдлыг сайжруулдаг. Энэ диаграммууд ScyllaDB-ийн BYOA суулгах хэрхэн харуулж байна. Диаграмын төвд EC2 дээр ажиллаж байгаа 6-нойд ScyllaDB кластераар харж болно. Дараа нь EC2 нь хоёр нэмэлт инстанц байдаг. ScyllaDB Monitor нь Grafana тавилга, Prometheus метрикуудыг санал болгож байна. ScyllaDB Manager нь баглаа боодол, сайжруулах зэрэг инфраструктур автоматжуулалттай. Энэ суулгах нь ScyllaDB-ийг бидний микросервисын маш ойр байрладаг бөгөөд энэ нь бидэнд илүү бага латенцийг, илүү их дамжуулалт, гүйцэтгэлийг олгодог. Учир нь, би танд одоо манай архитектур, платформыг дэмжих технологийг илүү сайн мэддэг бөгөөд ScyllaDB нь Tripadvisor-ийг маш өндөр түвшинд хянах боломжийг олгодог талаар ямар ч чухал зүйл юм. Cynthia Dunlop тухай Cynthia ScyllaDB-ийн контент стратегийн алдартай менежер юм. Энэ нь програм хангамжийн хөгжүүлэх, чанарын инженерийн талаар 20 гаруй жилийн турш бичсэн байна.