See the engineering behind real-time personalization at Tripadvisor’s massive (and rapidly growing) scale تاسو د هغه ډول مسافر یاست؟ Tripadvisor هڅه کوي چې د دې په وخت کې چې تاسو د ویب پاڼه سره اړیکه ونیسئ، بیا تاسو ته د هر کلک په اړه ډیر مهم معلومات وړاندې کوي - د میلی ثانیو په اړه. دا شخصي کول د پرمختللي ML ماډلونو له خوا کار کوي چې په ScyllaDB کې ذخیره شوي ډاټا پر عمل کوي چې په AWS کې کارول کیږي. په دې مقاله کې، Dean Poulin (Tripadvisor ډاټا انجنیري لیډ د AI خدمتونو او محصولاتو ټیم کې) د دې شخصي کولو څرنګړنه کوي. Dean د ټریپډویجر په لوی (و په چټکۍ سره وده ورکوي) کچه د واقعي وخت کې شخصي کولو وړاندې کولو کې د تخنیکي چټکونو څخه یو ګټه ورکوي. دا د لاندې AWS re:Invent خبرې پر بنسټ دی: د سفر د لارښوونې په Dean کلمه ... د 2000 کال کې تاسیس شوی، Tripadvisor د سفر او ګټورۍ په نړۍ کې یو مخکښ جوړ شوی دی، د ډیری میلیونه مسافرانو سره مرسته کوي چې د خپل بشپړ سفرونه پلان کړي. Tripadvisor د 1.8 میلیارده ډالرو ګټه کوي او د NASDAQ بورډ کې د نندارتون شرکت دی. اوس، موږ د 2،800 څخه زیات کارکوونکو ټیم لري چې د نوښتونو ته وده ورکوي، او زموږ پلیټ فارم په میاشت کې د 400 میلیونه انفرادي لیدونکو ته خدمت کوي - یو شمېر چې په دوامداره توګه وده کوي. په هر ځینې ورځ کې، زموږ سیسټم د 25 څخه تر 50 میلیونه کاروونکو څخه د 2 میلیارده درخواستونو په اړه کار کوي. هر کلک تاسو په Tripadvisor کې کارول کیږي په حقیقي وخت کې کارول کیږي. د دې په پایله کې، موږ د ماشین زده کړې ماډلونو څخه ګټه واخلئ ترڅو شخصي سپارښتنه ورکړئ - تاسو ته د دې کامل سفر ته نزدیک کړئ. د دې شخصي کولو انجن په کور کې ScyllaDB په AWS کې کارول کیږي. دا موږ ته اجازه ورکوي چې د میلی ثانیو لټینټ په کچه وړاندې کړي چې ځینې سازمانونه کولی شي ترلاسه کړي. په پریکړه ترافیک کې، موږ د AWS په غاړه کولی شو. . 425K operations per second on ScyllaDB with P99 latencies for reads and writes around 1-3 milliseconds موږ به څنګه د مسافرانو سره مرسته وکړي چې دوی د خپل بشپړ سفر پلان کولو ته اړتیا لري: که څه هم د مخکښ ګرمونه، باید لیدل شوي انټرنټونه، ناقانونه تجربهونه، یا ترټولو غوره ځایونه د بیلابیلو او شاملو لپاره. دا [قانون] د انجنیرۍ په اړه ده - څنګه موږ په واقعي وخت کې د کاروونکو سره سمون، اړین مواد وړاندې کوو، د دوی سره مرسته کوي چې دقیقا هغه څه چې دوی چمتو کوي په چټکۍ سره. د شخصي سفر پلان تصور وکړئ چې تاسو د سفر پلان وکړئ. لکه څنګه چې تاسو د Tripadvisor کور ویب پاڼه ته ځي، Tripadvisor به پوه شي که تاسو د خوړو، ماجراجویی یا ساحل عاشق یاست - او تاسو د پټ-ون سپارښتنې وګورئ چې ستاسو د ګټورانو لپاره شخصي وي. څنګه دا په ملي ثانیو کې ترسره کیږي؟ لکه څنګه چې تاسو د Tripadvisor په څیر چمتو کړئ، موږ د ماشين زده کړې ماډلونو په کارولو سره چې ستاسو د اوسني او مخکښ چمتو کولو فعالیت په اساس د امتیازونو محاسبه کوو. موږ د هوټلونو او تجربو سپارښتنه کوو چې موږ فکر کوو چې تاسو به په دلچسپي کې وي. موږ د هوټلونو سپارښتنه کوو ستاسو د شخصي ترټولو په اساس. موږ د هوټل چې تاسو یې چمتو کوو ساحهونه سپارښتنه کوو. دا ټول ستاسو د شخصي ترټولو او مخکښ فعالیت په اساس تنظیم شوي دي. د Tripadvisor ماډل د خدمتونو آرشیفیت Tripadvisor په Kubernetes on-prem او په Amazon EKS کې د بیلګې په توګه کچول وړ microservices په سینټونو کې چلول کیږي. زموږ د ML ماډل خدمت کولو پلیټ فارم د دغو microservices یو له لارې ښودل کیږي. دا دروازې خدمت د 100 څخه زيات ML ماډلونه څخه د مشتریانو خدمتونو څخه اخلي - دا به موږ ته اجازه ورکوي چې د تجربې پلیټ فارم له لارې غوره ماډلونه وکاروي. د ML ماډلونه په عمده توګه زموږ د ډاټا سائنسدانانو او ماشین زده کړې انجنیرانو له خوا د Jupyter نوټونه په Kubeflow کې جوړ شوي دي. دوی د ML Flow په کارولو سره مدیریت شوي او روزل شوي دي، او موږ دوی په Kubernetes کې د Seldon Core کې تاسیسوي. زموږ د ګمرک ځانګړتیاوې سټور زموږ د ML ماډلونو لپاره ځانګړتیاوې وړاندې کوي، کوم چې دوی اجازه ورکوي چې دقیق پیژندنه وکړي. د ګمرک ځانګړنو د پلور د Feature Store په عمده توګه د ګرځنده ځانګړتیاوو او سټیک ځانګړتیاوو خدمت کوي. سټیک ځانګړتیاوو په Redis کې ذخیره شوي دي ځکه چې دوی ډیری وختونه بدلون نلري. موږ ورځني ډاټا پمپونه چلوي ترڅو زموږ د offline ډاټا ذخیره څخه ډاټا د سټیک ځانګړتیاوو په توګه زموږ د Feature Store ته لوستلئ. د کاروونکي ځانګړتیاوې په واقعي وخت کې د لیدونکي پلیټ فارم له لارې خدمت کوي. موږ د ScyllaDB په مقابل کې د Dinamic CQL پوښتنو ترسره کوو، او . we do not need a caching layer because ScyllaDB is so fast زموږ د Feature Store په هر ثانیو کې د 5 میلیونه سټیک ځانګړتیاوو او د نیم میلیونه کارن ځانګړتیاوو خدمت کوي. د ML ځانګړتیاوې څه دي؟ ځانګړتیاوې د ML ماډلونو ته د انټرنټ بدلونونه دي چې د پیژندنې لپاره کارول کیږي. د سټیک ځانګړتیاوو او کارن ځانګړتیاوو شتون لري. ځینې مثالونه د سټیک ځانګړتیاوو په اړه د جایزه دي چې د رستوران په لټه کې یا د هوټل وړاندیز شوي وړتیاوې (چې وړیا Wi-Fi، pet دوستانه یا فټنس مرکز). موږ دوی په ScyllaDB کې ذخیره کوو نو موږ کولی شو په چټکۍ سره پوښتنو ترلاسه کړو. ځینې مثالونه د کاروونکي ځانګړتیاوې دي چې په وروستیو 30 دقیقې کې لیدل شوي هوټلونه، رستورانونه چې په وروستیو 24 ساعتونو کې لیدل شوي، یا په وروستیو 30 ورځو کې سپارل شوي نظرونه. د ټیکنالوژۍ د ګرځنده پلیټ ScyllaDB د لیدونکي پلیټ فارم په کور کې دی. موږ د جاوا پر بنسټ Spring Boot microservices کاروئ ترڅو د پلیټ فارم زموږ د مشتریانو ته وده ورکړي. دا په AWS ECS Fargate کې وده ورکړي. موږ د Apache Spark په Kubernetes کې زموږ د ورځني ډاټا د ساتنې کارونو لپاره، زموږ د offline ته آنلاین کارونو لپاره چلند کوو. بيا موږ د دې کارونو سره زموږ د offline ډاټا ذخیره څخه ډاټا د ScyllaDB ته ورسوي ترڅو دوی په ژوند کې شتون لري. موږ د Amazon Kinesis کاروئ ترڅو د کاروونکي د څارنې په سټراییم کې پروسس کړئ. د لیدونکي پلیټ فارم ډاټا جریان د لاندې ګرافۍ ښيي چې د معلوماتو په چار مرحلهونو کې زموږ پلیټ فارم کې څرنګه کوي: تولید، جذب، سازمان، او فعالول. ډاټا زموږ د ویب پاڼه او زموږ د ګرځنده غوښتنلیکونو لخوا تولید شوي دي. د دې ډاټا څخه ځینې شامل دي زموږ د Cross-Device User Identity Graph، Behavior Tracking حوادث (چې پاڼه وګورئ او کلکونه) او د سټراییم حوادث چې د Kinesis لخوا ترسره کیږي. همدارنګه، د ګرځنده segmentation په زموږ پلیټ فارم کې لوستل کیږي. د Visitor Platform microservices کارول کیږي د دې ډاټا د جذب او سازمانولو لپاره. په ScyllaDB کې د ډاټا په دوو کڅوړې کې ذخیره کیږي: د ګرځنده کور کلیدي فضا، چې د ګرځنده Identity Graph لري د لیدونکي متري کټګوریو، چې د حقایق او متريکونه لري (د هغه څه چې خلک د دې سایټ کې پلورل شوي دي) موږ ورځني ETL پروسهونه کاروي ترڅو د پلیټ فارم ډاټا د ساتنې او پاکولو لپاره. موږ د ډاټا محصولاتو تولید کوو، ورځني ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټا ډاټ دلته د تعدادونو له مخې د لیدونکي پلیټ فارم وګورئ: چرا د دوو ډاټا بیسونه؟ زموږ د آنلاین ډاټاټا په واقعي وخت کې، په ژوند کې د ویب پاڼه ترافیک تمرکز کوي. ScyllaDB د دې رول بشپړوي ترڅو ډیر ټیټ لټینټونه او لوړ پړاو وړاندې کړي. موږ د آنلاین ډاټاټا ډاټا کې د معلوماتو په لټه کې د لټون څخه مخنیوی کولو لپاره د ټیټ مدت TTLs کاروي، او زموږ د معلوماتو ذخیره کولو کارونه تضمین کوي چې موږ یوازې د کاروونکي فعالیت ډاټا د واقعي لیدونکو لپاره ذخیره کوو. Tripadvisor.com ډیری بوټ ترافیک ترلاسه کوي، او موږ غواړئ د دوی ډاټا ذخیره کړي او د بوټانو لپاره د شخصي کولو هڅه کوو - نو موږ ټول هغه ډاټا پاک کړئ او پاک کړئ. زموږ د آنلاین ډاټا سټاک د تاریخي ډاټا ذخیره کوي چې د راپور ورکولو، نورو ډاټا محصولاتو جوړولو، او زموږ د ML ماډلونو روزنې لپاره کارول کیږي. موږ نه غواړو چې د لوی کچه د آنلاین ډاټا پروسسونه زموږ د آنلاین سایټ فعالیت ته اغیزه وکړي، نو موږ د دوو انفرادی ډاټا بیسونه لري چې د دوو مختلفو هدفونو لپاره کارول کیږي. د لیدونکي پلیټ فارم microservices موږ د لیدونکي پلیټ فارم لپاره د 5 microservices کاروي: Visitor Core د کوکیز او د آله IDs په اساس د کاروونکي د انټرنټ ګراف مدیریت کوي. Visitor Metric زموږ د پوښتنې انجن دی، او دا موږ ته د معلوماتو او مټريکونو د ځانګړي لیدونکو لپاره ښودلو وړتیا وړاندې کوي. موږ د ډومین ځانګړي ژانر چې د لیدونکي پوښتنې ژانر یا VQL په نوم کې کاروي. دا مثال VQL تاسو ته اجازه ورکوي چې په وروستیو درې ساعتونو کې د سوداګرۍ کلک حقایقو وګورئ. Visitor Publisher او Visitor Saver د چاپ پړاو په کارولو سره، ډاټا په پلیټ فارم کې ورسوي. د ScyllaDB کې ډاټا ذخیره کولو په پرتله، موږ د ډاټا د آنلاین ډاټا ذخیره کولو ته هم ورسوي. دا د Amazon Kinesis سره ترسره کیږي. Visitor Composite د بیلګې پروسس کارونو کې د معلوماتو خپریدن ساده کوي. دا د Visitor Saver او Visitor Core لخوا د لیدونکو شناسایی کول او په یوه واحد API تماس کې حقایق او نمونې خپریدل کوي. Roundtrip Microservice لټینسی دا جدول ښيي چې زموږ microservice latencies د وخت په اوږدو کې stabile وي. د اوسط رخصتۍ یوازې 2.5 میلی ثانیو دی، او زموږ P999 د 12،5 میلی ثانیو څخه کم دی. دا د اغیزمن کړنو ده، په ځانګړې توګه په داسې حال کې چې موږ په ورځ کې د 1 میلیارده غوښتنلیکونو په کارولو سره. زموږ د مایکرو خدمتونو مشتریانو ته سخت لټینټ اړتیاوې لري. د تماسونو 95٪ باید په 12 میلی ثانیو یا لږ وخت کې بشپړ شي. که دوی د دې څخه زیات وي، نو موږ به پټ شوي وي او باید پوه شي چې څه د لټینټونو اغیزه کوي. ScyllaDB لټینټ دلته د ScyllaDB په درې ورځو کې د فعالیتونو د snapshot دی. په عالي وخت کې، ScyllaDB په هر ثانیو کې 340،000 عملیاتونه کاروي (د سپارښتنه او لوستل او حذفونه شامل دي) او د CPU د 21٪ په لټه کې ده. دا په فعاليت کې لوړ کچه ده! ScyllaDB موږ ته microsecond writes او millisecond reads وړاندې کوي. دا کچه د بریالیتوب د بریالیتوب په لټه کې دی، دا دقیقا د دې لپاره چې موږ ScyllaDB غوره کړ. په ScyllaDB کې د معلوماتو برخې دا انځور ښيي چې موږ څنګه په ScyllaDB کې ډاټا برخې کوو. د لیدونکي میټریک Keyspace د دوو جدولونه لري: واقعیت او خام میټریک. په واقعیت جدول کې د لومړي کلید د لیدونکي GUID، واقعیت ډول، او په تاریخ کې جوړ شوی دی. د مرکزي برخه کلید د لیدونکي GUID او واقعیت ډول دی. د کلستر کلید د تاریخ په تاریخ کې جوړ شوی دی، کوم چې موږ ته اجازه ورکوي چې د معلوماتو په برخهونو کې د تاریخ له مخې رامینځته کړي. د ځانګړتیاو کالم د JSON اټکل لري چې د واقعیت چې دلته ترسره شوې وه. ځینې مثالونه واقعیتونه شتونونه، پاڼه وګورئ، او کتابونه دي. موږ د ScyllaDB Leveled Compaction ستراتیژۍ کاروي ځکه چې: دا د رینج پوښتنو لپاره optimized دی دا د لوړ cardinality ډیره ښه کار کوي دا د لوستلو وزن کارولو لپاره ښه دی، او موږ په اړه 2-3X زيات لوستونه لري چې لیکل کیږي. ولې ScyllaDB؟ زموږ د حل په اصل کې د Cassandra on-prem په کارولو سره جوړ شوی دی. مګر لکه څنګه چې د کچه زیات شوی، د عملیاتو بار هم. دا د عملياتو ملاتړ ته اړتیا لري ترڅو موږ د ډاټا بیس اپراتورونو، خوندي کولو او داسې نور مدیریت وکړي. همدارنګه، زموږ د حل د کور د اجزاءو لپاره ډیر ټیټ اوږدوالی ته اړتيا لري. زموږ د کاروونکي شناخت مدیریت سیستم باید د 30 میلی ثانیو په اوږدوالي کې کاروونکي راټول کړي - او د غوره شخصي کولو لپاره، موږ زموږ د واقعاتو څارنې پلیټ فارم ته اړتیا لري چې په 40 میلی ثانیو کې ځواب ورکړي. دا مهم دی چې زموږ د حل د مخ د رینډو څخه مخنیوی نه کوي نو زموږ SLAs خورا کم دي. سره Cassandra، موږ موږ د ScyllaDB سره د Concept Proof چمتو کړ او پدې پایله کې چې د انتقال د Cassandra څخه ډیر ښه وي او د عملیاتي ضایع کم شوی. ScyllaDB موږ ته د کمترین امکاناتو لټینټ سره د لګولو لپاره د لګولو ډاټا ډاټا ډاټا ډاټا ورکړي. موږ غواړم چې په بشپړه توګه مدیریت وړ اختیاري وي، نو موږ له Cassandra څخه ScyllaDB Cloud ته migrated، د دوه ګوني کښته ستراتیژۍ وروسته. دا به موږ ته اجازه ورکړي چې د 40،000 عملیاتو یا غوښتنو په هر ثانیو کې د 40،000 وختونو سره migrating. وروسته، موږ له ScyllaDB Cloud ته ScyllaDB "د خپل حساب ورکولو" ماډل ته migrated، په کوم کې تاسو کولی شئ د ScyllaDB ټیم ته ستاسو د AWS حساب کې د ScyllaDB ډاټا ډیزاین کړئ. دا موږ ته ښه کړنو او د معلوماتو ډاټا ډاټا ډاټا ترلاسه کړي. دا ډیزاین ښيي چې د ScyllaDB BYOA پلورنې څنګه ښکاري. په مرکز کې، تاسو کولی شئ د 6 نان ScyllaDB کلستر وګورئ چې په EC2 کې کار کوي. او بیا د EC2 دوو اضافي انستونه شتون لري. ScyllaDB Monitor موږ ته Grafana ډیزاین بورډونه او همدارنګه Prometheus نمونې وړاندې کوي. ScyllaDB مدیر د انټرنېټ اتوماتاتو په څیر چمتو کوي لکه د خوندي کولو او ترمیمونو له لارې. د دې پراختیا سره، ScyllaDB کولی شي په اسانۍ سره زموږ د مایکرو خدماتو سره په ګډه موقعيت لري ترڅو موږ ته حتی کم latencies او همدارنګه ډیر لوړ پړاو او فعالیتونه ورکړي. په کلکه کې، زه امیدوارم چې تاسو اوس زموږ جوړښت، د ټیکنالوژۍ چې د پلیټ فارم وړتیا لري، او څنګه ScyllaDB له موږ ته اجازه ورکوي چې د Tripadvisor په ډیره لوړ کچه د کارولو لپاره د مهمې رول لوبوي. د Cynthia Dunlop Cynthia په ScyllaDB کې د موادو استراتژی سینیډر مدیر دی. هغه د 20 څخه زيات کلونو لپاره د سافټویر پراختیا او کیفیت انجنیرۍ په اړه چاپ کوي.