Sistemet analitike të serverëve

Kjo është pjesa e dytë e një serie artikujsh rreth sistemeve analitike (lidhje me pjesën 1).

Sistemet analitike të serverëve

Sot nuk ka më asnjë dyshim se përpunimi i kujdesshëm i të dhënave dhe interpretimi i rezultateve mund të ndihmojë pothuajse çdo lloj biznesi. Në këtë drejtim, sistemet analitike po ngarkohen gjithnjë e më shumë me parametra dhe numri i nxitësve dhe ngjarjeve të përdoruesve në aplikacione po rritet.
Për shkak të kësaj, kompanitë po u japin analistëve të tyre gjithnjë e më shumë informacion të papërpunuar për t'u analizuar dhe për t'u kthyer në vendime të shëndosha. Rëndësia e një sistemi analitik për një kompani nuk duhet të nënvlerësohet, dhe vetë sistemi duhet të jetë i besueshëm dhe i qëndrueshëm.

Analistët e klientëve

Analiza e klientit është një shërbim që një kompani e lidh me faqen e internetit ose aplikacionin e saj përmes SDK-së zyrtare, e integron në bazën e saj të kodeve dhe zgjedh nxitësit e ngjarjeve. Kjo qasje ka një dobësi të dukshme: të gjitha të dhënat e mbledhura mund të mos përpunohen saktësisht siç dëshironi për shkak të kufizimeve të çdo shërbimi që ju zgjidhni. Për shembull, në një sistem nuk do të jetë e lehtë të ekzekutoni detyrat MapReduce, në një tjetër nuk do të jeni në gjendje të ekzekutoni modelin tuaj. Një tjetër disavantazh do të jetë fatura e rregullt (mbresëlënëse) e shërbimeve.
Ka shumë zgjidhje analitike të klientëve në treg, por herët a vonë analistët përballen me faktin se nuk ka një shërbim universal të përshtatshëm për çdo detyrë (ndërsa çmimet për të gjitha këto shërbime po rriten gjatë gjithë kohës). Në një situatë të tillë, kompanitë shpesh vendosin të krijojnë sistemin e tyre analitik me të gjitha cilësimet dhe aftësitë e nevojshme me porosi.

Analistët e serverëve

Analitika nga ana e serverit është një shërbim që mund të vendoset brenda një kompanie në serverët e saj dhe (zakonisht) me përpjekjet e veta. Në këtë model, të gjitha ngjarjet e përdoruesit ruhen në serverë të brendshëm, duke i lejuar zhvilluesit të provojnë baza të ndryshme të të dhënave të ruajtjes dhe të zgjedhin arkitekturën më të përshtatshme. Dhe edhe nëse ende dëshironi të përdorni analitikë të klientëve të palëve të treta për disa detyra, do të jetë ende e mundur.
Analitika nga ana e serverit mund të vendoset në dy mënyra. Së pari: zgjidhni disa shërbime me burim të hapur, vendosini ato në makinat tuaja dhe zhvilloni logjikën e biznesit.

Rekuizitë
Cons

Ju mund të personalizoni çdo gjë që dëshironi
Kjo është shpesh shumë e vështirë dhe kërkon zhvillues të veçantë

Së dyti: merrni shërbimet SaaS (Amazon, Google, Azure) në vend që t'i vendosni vetë. Për SaaS do të flasim më në detaje në pjesën e tretë.

Rekuizitë
Cons

Mund të jetë më e lirë në vëllime të mesme, por me rritje të madhe do të vazhdojë të bëhet shumë e shtrenjtë
Nuk do të jetë e mundur të kontrollohen të gjithë parametrat

Administrimi është transferuar tërësisht në supet e ofruesit të shërbimit
Nuk dihet gjithmonë se çfarë ka brenda shërbimit (mund të mos jetë e nevojshme)

Si të mblidhni analitikë të serverit

Nëse duam të largohemi nga përdorimi i analitikës së klientit dhe të ndërtojmë tonën, para së gjithash duhet të mendojmë përmes arkitekturës së sistemit të ri. Më poshtë do t'ju tregoj hap pas hapi se çfarë duhet të keni parasysh, pse nevojitet secili hap dhe cilat mjete mund të përdorni.

1. Marrja e të dhënave

Ashtu si në rastin e analitikës së klientit, para së gjithash, analistët e kompanive zgjedhin llojet e ngjarjeve që duan të studiojnë në të ardhmen dhe i mbledhin ato në një listë. Në mënyrë tipike, këto ngjarje ndodhin në një rend specifik, të quajtur një "model ngjarjesh".
Më pas, imagjinoni që një aplikacion celular (faqe interneti) të ketë përdorues të rregullt (pajisje) dhe shumë serverë. Për të transferuar në mënyrë të sigurt ngjarjet nga pajisjet në serverë, nevojitet një shtresë e ndërmjetme. Në varësi të arkitekturës, mund të ketë disa radhë të ndryshme ngjarjesh.
Apache Kafka - A pijetore/nënradhë, e cila përdoret si radhë për mbledhjen e ngjarjeve.

Sipas posto në Quora në vitin 2014, krijuesi i Apache Kafka vendosi ta emërojë softuerin me emrin Franz Kafka sepse "është një sistem i optimizuar për të shkruar" dhe sepse i pëlqente veprat e Kafkës. - Wikipedia

Në shembullin tonë, ka shumë prodhues të të dhënave dhe konsumatorë të të dhënave (pajisje dhe serverë), dhe Kafka ndihmon në lidhjen e tyre me njëri-tjetrin. Konsumatorët do të përshkruhen më në detaje në hapat e mëposhtëm, ku ata do të jenë subjektet kryesore. Tani do të konsiderojmë vetëm prodhuesit e të dhënave (ngjarjet).
Kafka përmbledh konceptet e radhës dhe ndarjes; është më mirë të lexoni më konkretisht për këtë diku tjetër (për shembull, në dokumentacionin). Pa hyrë në detaje, le të imagjinojmë që një aplikacion celular është nisur për dy OS të ndryshëm. Pastaj çdo version krijon rrjedhën e tij të veçantë të ngjarjeve. Producentët dërgojnë ngjarje te Kafka, ato regjistrohen në një radhë të përshtatshme.
Sistemet analitike të serverëve
(Foto prandaj)

Në të njëjtën kohë, Kafka ju lejon të lexoni në copa dhe të përpunoni një rrjedhë ngjarjesh në mini-batch. Kafka është një mjet shumë i përshtatshëm që përshtatet mirë me nevojat në rritje (për shembull, sipas gjeolokimit të ngjarjeve).
Zakonisht një copëz është e mjaftueshme, por gjërat bëhen më të ndërlikuara gjatë shkallëzimit (siç bëjnë gjithmonë). Ndoshta askush nuk do të dëshirojë të përdorë vetëm një copëz fizike në prodhim, pasi arkitektura duhet të jetë tolerante ndaj gabimeve. Përveç Kafkës, ekziston një zgjidhje tjetër e njohur - RabbitMQ. Ne nuk e kemi përdorur atë në prodhim si një radhë për analitikën e ngjarjeve (nëse keni një përvojë të tillë, na tregoni për të në komente!). Sidoqoftë, ne përdorëm AWS Kinesis.

Para se të kalojmë në hapin tjetër, duhet të përmendim një shtresë tjetër shtesë të sistemit - ruajtjen e regjistrave të papërpunuar. Kjo nuk është një shtresë e kërkuar, por do të jetë e dobishme nëse diçka shkon keq dhe radhët e ngjarjeve në Kafka rivendosen. Ruajtja e shkrimeve të papërpunuara nuk kërkon një zgjidhje komplekse dhe të shtrenjtë; thjesht mund t'i shkruani ato diku në rendin e duhur (madje edhe në një hard disk).
Sistemet analitike të serverëve

2. Përpunimi i transmetimeve të ngjarjeve

Pasi kemi përgatitur të gjitha ngjarjet dhe i kemi vendosur në radhët përkatëse, kalojmë në hapin e përpunimit. Këtu do t'ju tregoj për dy opsionet më të zakonshme të përpunimit.
Opsioni i parë është aktivizimi i Spark Streaming në sistemin Apache. Të gjitha produktet Apache jetojnë në HDFS, një sistem skedari i sigurt me kopje skedarësh. Spark Streaming është një mjet i lehtë për t'u përdorur që trajton mirë të dhënat e transmetimit dhe shkallëzohet. Megjithatë, mund të jetë e vështirë për t'u ruajtur.
Një tjetër mundësi është të ndërtoni mbajtësin tuaj të ngjarjeve. Për ta bërë këtë, ju duhet, për shembull, të shkruani një aplikacion Python, ta ndërtoni atë në Docker dhe të regjistroheni në radhën Kafka. Kur shkasat të mbërrijnë te mbajtësit e dokerit, do të fillojë përpunimi. Me këtë metodë, ju duhet t'i mbani aplikacionet të funksionojnë gjithmonë.
Le të supozojmë se kemi zgjedhur një nga opsionet e përshkruara më sipër dhe të kalojmë në vetë përpunimin. Përpunuesit duhet të fillojnë duke kontrolluar vlefshmërinë e të dhënave, duke filtruar mbeturinat dhe ngjarjet "të prishura". Për vërtetim ne zakonisht përdorim Cerberus. Pas kësaj, mund të bëni hartën e të dhënave: të dhënat nga burime të ndryshme normalizohen dhe standardizohen në mënyrë që të shtohen në një tabelë të përbashkët.
Sistemet analitike të serverëve

3. Baza e të dhënave

Hapi i tretë është ruajtja e ngjarjeve të normalizuara. Kur punojmë me një sistem analitik të gatshëm, do të na duhet t'i qasemi shpesh, prandaj është e rëndësishme të zgjedhim një bazë të dhënash të përshtatshme.
Nëse të dhënat përshtaten mirë në një skemë fikse, mund të zgjidhni Clickhouse ose ndonjë bazë të dhënash tjetër kolone. Në këtë mënyrë grumbullimet do të funksionojnë shumë shpejt. Ana negative është se skema është e fiksuar në mënyrë të ngurtë dhe për këtë arsye nuk do të jetë e mundur të shtohen objekte arbitrare pa modifikim (për shembull, kur ndodh një ngjarje jo standarde). Por ju mund të numëroni shumë shpejt.
Për të dhëna të pastrukturuara, mund të merrni NoSQL, për shembull, Kasandra Apache. Ai funksionon në HDFS, përsëritet mirë, mund të ngrini shumë raste dhe është tolerant ndaj gabimeve.
Ju gjithashtu mund të ngrini diçka më të thjeshtë, për shembull, MongoDB. Është mjaft i ngadaltë dhe për vëllime të vogla. Por plusi është se është shumë i thjeshtë dhe për këtë arsye i përshtatshëm për fillim.
Sistemet analitike të serverëve

4. Grumbullimet

Pasi i kemi ruajtur me kujdes të gjitha ngjarjet, duam të mbledhim të gjithë informacionin e rëndësishëm nga grupi që mbërriti dhe të përditësojmë bazën e të dhënave. Globalisht, ne duam të marrim panele dhe metrika përkatëse. Për shembull, mblidhni një profil përdoruesi nga ngjarjet dhe matni disi sjelljen. Ngjarjet grumbullohen, mblidhen dhe ruhen sërish (në tabelat e përdoruesve). Në të njëjtën kohë, ju mund të ndërtoni një sistem në mënyrë që të mund të lidhni gjithashtu një filtër me koordinatorin grumbullues: mblidhni përdoruesit vetëm nga një lloj i caktuar ngjarjesh.
Pas kësaj, nëse dikush në ekip ka nevojë vetëm për analitikë të nivelit të lartë, sistemet e analitikës së jashtme mund të lidhen. Mund ta merrni sërish Mixpanel. por meqenëse është mjaft e shtrenjtë, jo të gjitha ngjarjet e përdoruesit dërgohen atje, por vetëm ato që nevojiten. Për ta bërë këtë, ne duhet të krijojmë një koordinator i cili do të transferojë disa ngjarje të papërpunuara ose diçka që ne vetë e grumbulluam më herët në sisteme të jashtme, API ose platforma reklamimi.
Sistemet analitike të serverëve

5. Frontend

Ju duhet të lidhni frontend me sistemin e krijuar. Një shembull i mirë është shërbimi skuqem, është një GUI e bazës së të dhënave që ndihmon në ndërtimin e paneleve. Si funksionon ndërveprimi:

  1. Përdoruesi bën një pyetje SQL.
  2. Në përgjigje ai merr një shenjë.
  3. Krijon një 'vizualizim të ri' për të dhe merr një grafik të bukur që mund ta ruani për veten tuaj.

Vizualizimet në shërbim përditësohen automatikisht, ju mund të personalizoni dhe gjurmoni monitorimin tuaj. Redash është falas nëse organizohet vetë, por si SaaS do të kushtojë 50 dollarë në muaj.
Sistemet analitike të serverëve

Përfundim

Pasi të keni përfunduar të gjitha hapat e mësipërm, do të krijoni analitikën e serverit tuaj. Ju lutemi vini re se kjo nuk është aq e thjeshtë sa thjesht lidhja e analitikës së klientit, sepse gjithçka duhet të konfigurohet vetë. Prandaj, përpara se të krijoni sistemin tuaj, ia vlen të krahasoni nevojën për një sistem serioz analitik me burimet që jeni të gatshëm t'i ndani atij.
Nëse keni bërë llogaritë dhe keni gjetur se kostot janë shumë të larta, në pjesën tjetër do të flas se si të bëni një version më të lirë të analitikës nga serveri.

Faleminderit per leximin! Do të jem i lumtur të bëj pyetje në komente.

Burimi: www.habr.com

Shto një koment