See the engineering behind real-time personalization at Tripadvisor’s massive (and rapidly growing) scale Tripadvisor inajaribu kutathmini hii mara tu unapowasiliana na tovuti, kisha inakupa habari zaidi na muhimu kwa kila kubonyeza-katika suala la milliseconds. Katika makala hii, Dean Poulin (Tripadvisor Data Engineering Leader katika timu ya Huduma na Bidhaa za AI) hutoa mtazamo wa jinsi wanaweza kuwezesha utu huu. Ni msingi wa AWS re:Invent kuzungumza: Maelekezo ya Pre-Trip Kwa maneno ya Dean ... Tutaanza na picha ya haraka ya ni nani Tripadvisor ni, na kiwango ambacho tunavyofanya kazi. Ilianzishwa mwaka 2000, Tripadvisor imekuwa kiongozi wa kimataifa katika usafiri na ukarimu, kusaidia mamia ya mamilioni ya abiria kupanga safari zao bora. Tripadvisor hutoa mapato zaidi ya dola bilioni 1.8 na ni kampuni iliyochapishwa hadharani kwenye Bursa ya Nasdaq. Leo, tuna timu ya wafanyakazi wenye ujuzi zaidi ya 2,800 inayotumia uvumbuzi, na jukwaa letu hutoa wageni milioni 400 wa kipekee kwa mwezi - idadi ambayo inaongezeka mara kwa mara. Kila siku, mfumo wetu unashughulikia maombi zaidi ya bilioni 2 kutoka kwa watumiaji milioni 25 hadi 50. Kila kifungo unachofanya kwenye Tripadvisor unashughulikiwa katika muda halisi. Nyuma ya hayo, tunatumia mifano ya kujifunza mashine ili kukupa mapendekezo ya kibinafsi - kukufanyia karibu na safari hiyo kamili. Juu ya injini hii ya kibinafsi ni ScyllaDB inayoendesha kwenye AWS. Hii inakuwezesha kutoa muda wa millisecond kwa kiwango ambacho mashirika machache yanafikia. . 425K operations per second on ScyllaDB with P99 latencies for reads and writes around 1-3 milliseconds Nitashirikisha jinsi TripAdvisor inavyotumia nguvu za ScyllaDB, AWS, na ujuzi wa mashine wa wakati halisi ili kutoa mapendekezo ya kibinafsi kwa kila mtumiaji. Tutajifunza jinsi tunavyowasaidia wasafiri kupata kila kitu wanahitaji kupanga safari yao kamili: iwe ni kugundua mawe ya siri, vitu vinapaswa kuona, uzoefu usio na kusahau, au maeneo bora ya kukaa na chakula cha jioni. [hariri] Hii ni kuhusu uhandisi wa nyuma ya hilo - jinsi tunatoa maudhui yenye ufanisi na yanayohusiana kwa watumiaji katika muda halisi, kusaidia kupata hasa kile wanaotafuta haraka iwezekanavyo. Mipango ya safari ya kibinafsi Fikiria unapanga kusafiri. Mara tu unapoingia kwenye ukurasa wa nyumbani wa Tripadvisor, Tripadvisor tayari anajua kama wewe ni foodie, adventurer, au mpenzi wa pwani - na unapata mapendekezo ya spot-on ambayo inaonekana kuwa ya kibinafsi kwa maslahi yako mwenyewe. Kama wewe kuvinjari karibu na Tripadvisor, sisi kuanza kubinafsisha kile unachokiona kwa kutumia mifano ya Machine Learning ambayo inategemea pointi kulingana na shughuli yako ya sasa na ya awali ya kuvinjari. Sisi kupendekeza hoteli na uzoefu kwamba sisi kufikiri utakuwa na maslahi yako. Sisi kupanga hoteli kulingana na mapendekezo yako binafsi. Sisi kupendekeza maeneo maarufu ya kuvutia karibu na hoteli wewe ni kuvinjari. Hizi zote ni iliyoundwa kulingana na mapendekezo yako binafsi na shughuli ya kuvinjari awali. Mfano wa Tripadvisor unaotumia usanifu Tripadvisor inafanya kazi kwenye mamia ya microservices zinazoweza kupanuliwa kwa kujitegemea katika Kubernetes on-prem na katika Amazon EKS. Mfumo wetu wa Huduma ya Mfano wa ML unapatikana kupitia mojawapo ya microservices hizi. Huduma hii ya mlango inachukua zaidi ya mifano 100 ya ML kutoka kwa Huduma za Wateja - ambayo inatuwezesha kuendesha majaribio ya A / B ili kupata mifano bora kwa kutumia jukwaa letu la majaribio. mifano ya ML inajengwa na watafiti wetu wa data na wahandisi wa ujuzi wa mashine kwa kutumia Jupyter Notebooks kwenye Kubeflow. zinaendeshwa na mafunzo kwa kutumia ML Flow, na tunatumia kwenye Seldon Core katika Kubernetes. Soko letu la vipengele vya Custom hutoa vipengele kwa mifano yetu ya ML, kuwezesha kufanya utabiri wa uhakika. Bidhaa ya Custom Feature Soko la vipengele hutoa kipengele cha mtumiaji na vipengele vya static. vipengele vya static hupatikana katika Redis kwa sababu hazibadilika mara kwa mara. Tunatumia pipelines za data kila siku ili kupakia data kutoka kwenye hifadhi yetu ya data ya offline kwenye Soko letu la vipengele kama vipengele vya static. Utumiaji wa kipengele hutolewa katika muda halisi kupitia jukwaa linaloitwa Visitor Platform. Tunaendesha maswali ya dinamiki ya CQL dhidi ya ScyllaDB, na . we do not need a caching layer because ScyllaDB is so fast Store yetu ya kipengele hutoa vipengele vya static hadi milioni 5 kwa sekunde na vipengele vya mtumiaji milioni nusu kwa sekunde. Nini maana ya ML? Vifaa ni viwango vya kuingia vya Modeli za ML ambavyo vinatumika kufanya utabiri. Baadhi ya mifano ya vipengele vya static ni tuzo ambazo hoteli imeshinda au vifaa vinavyotolewa na hoteli (kama vile Wi-Fi ya bure, pet friendly au kituo cha fitness). Vipengele vya mtumiaji vinakusanywa katika muda halisi wakati watumiaji kuvinjari tovuti. Tunahifadhiwa katika ScyllaDB ili tuweze kupata maswali ya haraka. Baadhi ya mifano ya vipengele vya mtumiaji ni hoteli zilizotajwa katika dakika ya 30 iliyopita, maduka yaliyotazama katika masaa ya 24 iliyopita, au mapitio yaliyowasilishwa katika siku za 30. Teknolojia inayoweza kuwezesha jukwaa la wageni ScyllaDB ni msingi wa Jukwaa la Wageni. Tunatumia microservices ya Spring Boot ya Java ili kuonyesha jukwaa kwa wateja wetu. Hili linatumika kwenye AWS ECS Fargate. Tunatumia Apache Spark kwenye Kubernetes kwa kazi zetu za kila siku za kuhifadhi data, kazi zetu za nje na mtandaoni. Kisha tunatumia kazi hizi kupakia data kutoka kwenye hifadhi yetu ya data ya nje kwenye ScyllaDB ili kuwa inapatikana kwenye tovuti ya moja kwa moja. Tunatumia pia Amazon Kinesis kwa usindikaji wa matukio ya ufuatiliaji wa mtumiaji. Mzunguko wa Data ya Platform ya Wageni Grafu ifuatayo inaonyesha jinsi data inakwenda kupitia jukwaa letu katika hatua nne: kuzalisha, kuchukua, kuandaa, na kufungua. Takwimu zinazozalishwa na tovuti yetu na maombi yetu ya simu. Baadhi ya data hiyo ni pamoja na Graph yetu ya Utumiaji wa Mtandao, matukio ya ufuatiliaji wa tabia (kama vile maoni ya ukurasa na click) na matukio ya ufuatiliaji ambayo hutokea kupitia Kinesis. Microservices ya Visitor Platform hutumiwa kuingiza na kuandaa data hii. Data katika ScyllaDB ni kuhifadhiwa katika nafasi mbili: Kitengo cha Visitor Core, ambacho kinahusisha Graph ya Utambulisho wa Wageni Kichwa cha Mtazamaji Metric, ambayo inajumuisha Ukweli na Metrics (chakula ambacho watu walifanya wakati wa kuvinjari tovuti) Tunatumia taratibu za ETL za kila siku ili kudumisha na kusafisha data kwenye jukwaa.Tunatengeneza Bidhaa za Data, zilizohifadhiwa kila siku, katika hifadhi yetu ya data ya nje - ambapo zinaweza kutumika kwa ushirikiano mwingine na njia nyingine za data kutumika katika usindikaji wao. Hapa ni mtazamo wa Platform ya Wageni kwa idadi: Kwa nini database mbili? Database yetu ya mtandaoni inazingatia trafiki ya tovuti ya kweli, ya moja kwa moja. ScyllaDB inachukua jukumu hili kwa kutoa muda mfupi sana na upungufu wa juu. Tunatumia TTLs za muda mfupi ili kuzuia data katika database ya mtandaoni kukua kwa muda usiojulikana, na kazi yetu ya kuhifadhi data inahakikisha kwamba tunahifadhi data ya shughuli ya mtumiaji tu kwa wageni halisi. Tripadvisor.com inapata trafiki mengi ya bot, na hatutaki kuhifadhi data zao na kujaribu kubinafsisha bots - hivyo tunatoweka na kufuta data hiyo yote. Hifadhi yetu ya data ya nje inahifadhi data ya kihistoria iliyotumika kwa ajili ya ripoti, kuunda bidhaa nyingine za data, na mafunzo ya Models yetu ya ML. Hatutaki mchakato mkubwa wa data ya nje unaathiri utendaji wa tovuti yetu ya moja kwa moja, kwa hiyo tuna database mbili tofauti zinazotumika kwa madhumuni mawili tofauti. Makampuni ya Microservices Tunatumia 5 microservices kwa jukwaa la wageni: Visitor Core inashughulikia chati ya utambulisho wa mtumiaji wa kifaa kulingana na kuki na ID za kifaa. Visitor Metric ni injini yetu ya kuuliza, na kwamba hutoa uwezo wa kufichua ukweli na takwimu kwa wageni maalum. Tunatumia lugha maalum ya kikoa inayoitwa lugha ya kuuliza wageni, au VQL. Mfano huu wa VQL inaruhusu kuona ukweli wa mwisho wa biashara ya click katika masaa matatu iliyopita. Visitor Publisher na Visitor Saver hushughulikia njia ya kuandika, kuandika data kwenye jukwaa. Mbali na kuhifadhi data katika ScyllaDB, pia tunatoa data kwenye hifadhi ya data ya nje. Hii inafanywa na Amazon Kinesis. Visitor Composite inasaidia kuchapisha data katika kazi za usindikaji wa seti. Inachukua Visitor Saver na Visitor Core kutambua wageni na kuchapisha ukweli na takwimu katika wito mmoja wa API. Urefu wa Microservice Latency Grafu hii inaonyesha jinsi latencies yetu ya microservice inabaki imara kwa muda. Urefu wa wastani ni milliseconds 2.5 tu, na P999 yetu ni chini ya milliseconds 12.5 Hii ni utendaji wa kushangaza, hasa kwa kuzingatia kwamba tunashughulikia maombi zaidi ya bilioni 1 kwa siku. Wateja wetu wa huduma za microservice wana mahitaji kali ya latency. 95% ya wito wanapaswa kukamilisha katika milliseconds 12 au chini. Ikiwa wanapita hii, basi tutakuwa na ukurasa na tunahitaji kujua nini kinachoathiri latency. Urefu wa Latency Hapa ni snapshot ya utendaji wa ScyllaDB katika siku tatu. Katika kiwango cha juu, ScyllaDB inashughulikia operesheni 340,000 kwa sekunde (ikiwa ni pamoja na kuandika na kusoma na kufuta) na CPU inashuka tu 21%. ScyllaDB hutoa microsecond kuandika na millisecond kusoma kwetu. kiwango hiki cha utendaji wa haraka sana ni kwa nini sisi kuchagua ScyllaDB. Kuunganisha data kwenye ScyllaDB Picha hii inaonyesha jinsi tunavyopiga data katika ScyllaDB. Mipango ya Mipango ya Mtazamaji ina meza mbili: Mipango ya Ukweli na Mipango ya Raw. Chaguo kuu kwenye meza ya Ukweli ni GUID ya Mtazamaji, Kiwango cha Ukweli, na Kiwango cha Uumbaji. Chaguo la sehemu ya mchanganyiko ni GUID ya Mtazamaji na Kiwango cha Ukweli. Chaguo la uumbaji ni Uumbaji wa Tarehe, ambayo inakuwezesha kutorodhesha data katika vipande kwa tarehe. Mstari wa sifa ina kitu cha JSON ambacho kinawakilisha tukio lililotokea huko. Baadhi ya mifano ya Ukweli ni Masharti ya Utafutaji, Maoni ya Ukurasa, na Makazi. Tunatumia mkakati wa ScyllaDB kwa sababu: Ni bora kwa ajili ya maswali ya kiwango Inashughulikia juu ya cardinality vizuri sana Ni bora kwa kazi kubwa ya kusoma, na tuna kuhusu 2-3X zaidi ya kusoma kuliko kuandika Kwa nini ScyllaDB? Suluhisho letu ilianzishwa kwa kutumia Cassandra on-prem. Lakini kama kiwango kiliongezeka, pia mzigo wa uendeshaji. Ilikuwa inahitajika msaada wa shughuli za kujitolea ili tuweze kusimamia upgrades ya database, backups, nk Pia, suluhisho letu linahitaji muda mfupi sana kwa vipengele vya msingi. Mfumo wetu wa Usimamizi wa Utambulisho wa Mtumiaji unapaswa kutambua mtumiaji ndani ya milliseconds 30 – na kwa utu bora, tunahitaji jukwaa letu la ufuatiliaji wa matukio kujibu katika milliseconds 40. Ni muhimu kwamba suluhisho letu haifai kuonyesha ukurasa ili SLA yetu iwe ndogo sana. Na Cassandra, tulikuwa na athari kwa utendaji kutoka kwa kukusanya taka. Tulifanya uhakika wa dhana na ScyllaDB na tuligundua kuwa upatikanaji ni bora sana kuliko Cassandra na mzigo wa uendeshaji uliondolewa. Tulitaka chaguo lenye usimamizi kamili, hivyo tukahamia kutoka Cassandra kwenye Cloud ya ScyllaDB, kufuatia mkakati wa kuandika mbili. Hiyo iliruhusu kuhamia bila upungufu wa muda wakati wa kusimamia shughuli za 40,000 au maombi kwa sekunde. Mchoro huu unaonyesha jinsi usambazaji wa BYOA wa ScyllaDB unavyoonekana. Katika katikati ya chati, unaweza kuona cluster ya 6-node ya ScyllaDB ambayo inafanya kazi kwenye EC2. ScyllaDB Monitor hutoa boards ya Grafana pamoja na takwimu za Prometheus. ScyllaDB Manager inachukua huduma ya utengenezaji wa miundombinu kama vile kuchochea uhifadhi na ukarabati. Pamoja na utekelezaji huu, ScyllaDB inaweza kuingizwa karibu na huduma zetu za microservices ili kutupa latencies ya chini zaidi pamoja na uwezo na utendaji wa juu zaidi. Kwa ujumla, natumaini sasa una ufahamu bora wa usanifu wetu, teknolojia ambazo zinaendesha jukwaa, na jinsi ScyllaDB inachukua jukumu muhimu katika kuruhusu sisi kukabiliana na ukubwa mkubwa wa TripAdvisor. Maoni ya Cynthia Dunlop Cynthia ni Mkurugenzi Mtendaji wa Mkakati wa Maudhui katika ScyllaDB. Anaandika kuhusu maendeleo ya programu na uhandisi wa ubora kwa zaidi ya miaka 20.