Server tahlil tizimlari

Bu analitik tizimlar haqidagi maqolalar turkumining ikkinchi qismi (1-qismga havola).

Server tahlil tizimlari

Bugungi kunda ma'lumotlarni sinchkovlik bilan qayta ishlash va natijalarni talqin qilish deyarli har qanday biznes turiga yordam berishiga shubha yo'q. Shu munosabat bilan analitik tizimlar tobora ko'proq parametrlar bilan yuklanmoqda va ilovalardagi triggerlar va foydalanuvchi hodisalari soni ortib bormoqda.
Shu sababli, kompaniyalar o'z tahlilchilariga tahlil qilish va to'g'ri qaror qabul qilish uchun tobora ko'proq xom ma'lumot berishmoqda. Kompaniya uchun tahlil tizimining ahamiyatini e'tiborsiz qoldirmaslik kerak, tizimning o'zi ishonchli va barqaror bo'lishi kerak.

Mijoz tahlilchilari

Mijozlarni tahlil qilish - bu kompaniya rasmiy SDK orqali o'z veb-saytiga yoki ilovasiga ulanadigan, o'zining kod bazasiga integratsiyalashgan va voqea triggerlarini tanlaydigan xizmatdir. Ushbu yondashuvning aniq salbiy tomoni bor: siz tanlagan har qanday xizmatning cheklovlari tufayli to'plangan barcha ma'lumotlar siz xohlagan tarzda qayta ishlanmasligi mumkin. Misol uchun, bir tizimda MapReduce vazifalarini bajarish oson bo'lmaydi, boshqasida siz o'z modelingizni ishga tushira olmaysiz. Yana bir kamchilik - xizmatlar uchun muntazam (ta'sirli) hisob-kitob bo'ladi.
Bozorda mijozlarni tahlil qilish bo'yicha ko'plab echimlar mavjud, ammo ertami-kechmi tahlilchilar har bir vazifa uchun mos bo'lgan yagona universal xizmat yo'qligiga duch kelishadi (bu xizmatlarning narxi doimiy ravishda oshib bormoqda). Bunday vaziyatda kompaniyalar ko'pincha barcha kerakli sozlamalar va imkoniyatlarga ega o'zlarining tahliliy tizimini yaratishga qaror qilishadi.

Server tahlilchilari

Server tomoni tahlili - bu kompaniya ichida o'z serverlarida va (odatda) o'z harakatlari bilan joylashtirilishi mumkin bo'lgan xizmat. Ushbu modelda barcha foydalanuvchi hodisalari ichki serverlarda saqlanadi, bu esa ishlab chiquvchilarga turli xil saqlash ma'lumotlar bazalarini sinab ko'rish va eng qulay arxitekturani tanlash imkonini beradi. Va agar siz hali ham ba'zi vazifalar uchun uchinchi tomon mijozlar tahlilidan foydalanmoqchi bo'lsangiz ham, bu hali ham mumkin bo'ladi.
Server tomonidagi tahlillarni ikki usulda joylashtirish mumkin. Birinchidan: ochiq kodli yordamchi dasturlarni tanlang, ularni mashinalaringizga joylashtiring va biznes mantiqini rivojlantiring.

Plyusy
Minusy

Siz xohlagan narsani sozlashingiz mumkin
Bu ko'pincha juda qiyin va alohida ishlab chiquvchilarni talab qiladi

Ikkinchidan: SaaS xizmatlaridan (Amazon, Google, Azure) o'zingiz foydalanish o'rniga foydalaning. SaaS haqida uchinchi qismda batafsilroq gaplashamiz.

Plyusy
Minusy

O'rtacha hajmlarda arzonroq bo'lishi mumkin, ammo katta o'sish bilan u hali ham qimmatga tushadi
Barcha parametrlarni nazorat qilish mumkin bo'lmaydi

Ma'muriyat to'liq xizmat ko'rsatuvchi provayderning yelkasiga o'tadi
Xizmat ichida nima borligi har doim ham ma'lum emas (kerak bo'lmasligi mumkin)

Server tahlilini qanday yig'ish kerak

Agar biz mijozlar tahlilidan voz kechishni va o'zimiznikini yaratmoqchi bo'lsak, birinchi navbatda yangi tizim arxitekturasini o'ylab ko'rishimiz kerak. Quyida men sizga nimaga e'tibor berishingiz kerakligini, har bir qadam nima uchun kerakligini va qanday vositalardan foydalanishingiz mumkinligini bosqichma-bosqich aytib beraman.

1. Ma'lumotlarni qabul qilish

Mijozlarni tahlil qilishda bo'lgani kabi, birinchi navbatda, kompaniya tahlilchilari kelajakda o'rganmoqchi bo'lgan voqealar turlarini tanlaydilar va ularni ro'yxatga oladilar. Odatda, bu hodisalar "hodisalar namunasi" deb ataladigan ma'lum bir tartibda sodir bo'ladi.
Keyinchalik, mobil ilovada (veb-saytda) oddiy foydalanuvchilar (qurilmalar) va ko'plab serverlar borligini tasavvur qiling. Hodisalarni qurilmalardan serverlarga xavfsiz o'tkazish uchun oraliq qatlam kerak. Arxitekturaga qarab, bir nechta turli xil voqealar navbatlari bo'lishi mumkin.
Apache Kafka Ismi? pub/sub navbat, bu hodisalarni yig'ish uchun navbat sifatida ishlatiladi.

Shunga ko'ra Quora-da post 2014 yilda Apache Kafka yaratuvchisi dasturiy ta'minotga Frants Kafka nomini berishga qaror qildi, chunki "bu yozish uchun optimallashtirilgan tizim" va u Kafka asarlarini yaxshi ko'rar edi. β€” Vikipediya

Bizning misolimizda ko'plab ma'lumotlarni ishlab chiqaruvchilar va ma'lumotlar iste'molchilari (qurilmalar va serverlar) mavjud va Kafka ularni bir-biriga ulashda yordam beradi. Iste'molchilar keyingi bosqichlarda batafsilroq tavsiflanadi, bu erda ular asosiy sub'ektlar bo'ladi. Endi biz faqat ma'lumot ishlab chiqaruvchilarni (hodisalar) ko'rib chiqamiz.
Kafka navbat va bo'linish tushunchalarini qamrab oladi; bu haqda boshqa joyda aniqroq o'qish yaxshiroqdir (masalan, hujjatlar). Tafsilotlarga kirmasdan, ikki xil operatsion tizim uchun mobil ilova ishga tushirilganini tasavvur qilaylik. Keyin har bir versiya o'zining alohida hodisa oqimini yaratadi. Ishlab chiqaruvchilar voqealarni Kafkaga jo'natishadi, ular tegishli navbatda qayd etiladi.
Server tahlil tizimlari
(rasm shu yerda)

Shu bilan birga, Kafka sizga qismlarga bo'lib o'qish va voqealar oqimini mini-to'plamlarda qayta ishlash imkonini beradi. Kafka - bu o'sib borayotgan ehtiyojlarga mos keladigan juda qulay vosita (masalan, hodisalarning geolokatsiyasi bo'yicha).
Odatda bitta parcha kifoya qiladi, lekin masshtablashda ishlar murakkablashadi (har doimgidek). Ehtimol, hech kim ishlab chiqarishda faqat bitta jismoniy parchadan foydalanishni xohlamaydi, chunki arxitektura xatolarga chidamli bo'lishi kerak. Kafkadan tashqari yana bir mashhur yechim bor - RabbitMQ. Biz uni ishlab chiqarishda voqealarni tahlil qilish uchun navbat sifatida ishlatmadik (agar sizda shunday tajriba bo'lsa, bu haqda bizga izohlarda aytib bering!). Biroq, biz AWS Kinesis-dan foydalandik.

Keyingi bosqichga o'tishdan oldin, biz tizimning yana bir qo'shimcha qatlamini - xom jurnalni saqlashni eslatib o'tishimiz kerak. Bu talab qilinadigan qatlam emas, lekin biror narsa noto'g'ri ketsa va Kafkadagi voqea navbatlari qayta tiklansa foydali bo'ladi. Xom jurnallarni saqlash murakkab va qimmat echimni talab qilmaydi, siz ularni biron bir joyga to'g'ri tartibda yozishingiz mumkin (hatto qattiq diskda ham).
Server tahlil tizimlari

2. Voqea oqimlarini qayta ishlash

Barcha hodisalarni tayyorlab, ularni tegishli navbatlarga qo'yganimizdan so'ng, biz qayta ishlash bosqichiga o'tamiz. Bu erda men sizga ikkita eng keng tarqalgan ishlov berish variantlari haqida gapirib beraman.
Birinchi variant - Apache tizimida Spark Streaming-ni yoqish. Barcha Apache mahsulotlari HDFS-da, fayl nusxalari bilan xavfsiz fayl tizimida yashaydi. Spark Streaming - bu oqimli ma'lumotlarni yaxshi boshqaradigan va o'lchovlarni yaxshi boshqaradigan foydalanish uchun qulay vosita. Biroq, uni saqlash qiyin bo'lishi mumkin.
Yana bir variant - o'zingizning hodisa ishlov beruvchingizni yaratish. Buning uchun, masalan, Python dasturini yozish, uni Docker-da qurish va Kafka navbatiga obuna bo'lish kerak. Triggerlar docker ishlov beruvchilariga kelganda, qayta ishlash boshlanadi. Ushbu usul yordamida siz ilovalarni doimo ishlashini ta'minlashingiz kerak.
Aytaylik, biz yuqorida tavsiflangan variantlardan birini tanladik va qayta ishlashning o'ziga o'tamiz. Protsessorlar ma'lumotlarning haqiqiyligini tekshirish, axlatni filtrlash va "buzilgan" hodisalardan boshlashlari kerak. Tasdiqlash uchun biz odatda foydalanamiz Cerberus. Shundan so'ng siz ma'lumotlar xaritasini yaratishingiz mumkin: turli manbalardan olingan ma'lumotlar umumiy jadvalga qo'shilishi uchun normallashtiriladi va standartlashtiriladi.
Server tahlil tizimlari

3. Ma'lumotlar bazasi

Uchinchi qadam - normallashtirilgan hodisalarni saqlab qolish. Tayyor analitik tizim bilan ishlashda biz ularga tez-tez kirishimiz kerak bo'ladi, shuning uchun qulay ma'lumotlar bazasini tanlash muhimdir.
Agar ma'lumotlar belgilangan sxemaga yaxshi mos tushsa, siz tanlashingiz mumkin klik uyi yoki boshqa ustunli ma'lumotlar bazasi. Shunday qilib, agregatlar juda tez ishlaydi. Salbiy tomoni shundaki, sxema qat'iy belgilangan va shuning uchun o'zgartirishlarsiz o'zboshimchalik bilan ob'ektlarni qo'shish mumkin bo'lmaydi (masalan, nostandart hodisa sodir bo'lganda). Ammo siz juda tez hisoblashingiz mumkin.
Tarkibi bo'lmagan ma'lumotlar uchun siz NoSQL-ni olishingiz mumkin, masalan, Apache kassandra. U HDFS da ishlaydi, yaxshi replikatsiya qiladi, siz ko'plab misollarni ko'tarishingiz mumkin va xatolarga chidamli.
Siz oddiyroq narsani ham ko'tarishingiz mumkin, masalan, MongoDB. Bu juda sekin va kichik hajmlar uchun. Ammo ortiqcha narsa shundaki, u juda oddiy va shuning uchun boshlash uchun mos keladi.
Server tahlil tizimlari

4. Agregatlar

Barcha voqealarni diqqat bilan saqlaganimizdan so'ng, biz kelgan partiyadan barcha muhim ma'lumotlarni to'plashni va ma'lumotlar bazasini yangilashni xohlaymiz. Global miqyosda biz tegishli asboblar paneli va ko'rsatkichlarni olishni xohlaymiz. Masalan, voqealardan foydalanuvchi profilini to'plang va qandaydir tarzda xatti-harakatni o'lchang. Hodisalar umumlashtiriladi, to'planadi va yana saqlanadi (foydalanuvchi jadvallarida). Shu bilan birga, siz filtrni agregator-koordinatorga ham ulashingiz uchun tizimni yaratishingiz mumkin: foydalanuvchilarni faqat ma'lum bir hodisa turidan to'plang.
Shundan so'ng, agar jamoada kimdir faqat yuqori darajadagi tahlilga muhtoj bo'lsa, tashqi tahlil tizimlari ulanishi mumkin. Mixpanelni yana qabul qilishingiz mumkin. lekin bu juda qimmat bo'lgani uchun u erga barcha foydalanuvchi voqealari yuborilmaydi, faqat kerakli narsalar. Buning uchun biz ba'zi bir xom hodisalarni yoki o'zimiz ilgari jamlagan narsalarni tashqi tizimlarga, API'larga yoki reklama platformalariga o'tkazadigan koordinator yaratishimiz kerak.
Server tahlil tizimlari

5. Frontend

Frontendni yaratilgan tizimga ulashingiz kerak. Yaxshi misol - bu xizmat qizg'ish, asboblar panelini yaratishga yordam beradigan ma'lumotlar bazasi GUI. O'zaro ta'sir qanday ishlaydi:

  1. Foydalanuvchi SQL so'rovini amalga oshiradi.
  2. Bunga javoban u belgi oladi.
  3. U buning uchun "yangi vizualizatsiya" yaratadi va o'zingiz uchun saqlashingiz mumkin bo'lgan chiroyli grafikni oladi.

Xizmatdagi vizualizatsiya avtomatik yangilanadi, siz monitoringingizni sozlashingiz va kuzatishingiz mumkin. Agar o'z-o'zidan joylashgan bo'lsa, Redash bepul, lekin SaaS sifatida oyiga 50 dollar turadi.
Server tahlil tizimlari

xulosa

Yuqoridagi barcha amallarni bajarganingizdan so'ng siz server tahlilini yaratasiz. E'tibor bering, bu shunchaki mijozlar tahlilini ulash kabi oddiy emas, chunki hamma narsani o'zingiz sozlashingiz kerak. Shuning uchun, o'z tizimingizni yaratishdan oldin, jiddiy tahlil tizimiga bo'lgan ehtiyojni siz unga ajratishga tayyor bo'lgan resurslar bilan solishtirishga arziydi.
Agar siz hisob-kitoblarni amalga oshirgan bo'lsangiz va xarajatlar juda yuqori ekanligini aniqlagan bo'lsangiz, keyingi qismda men server tomoni tahlilining arzonroq versiyasini qanday qilish haqida gapiraman.

O'qiganingiz uchun tashakkur! Izohlarda savollar berishdan xursand bo'laman.

Manba: www.habr.com

a Izoh qo'shish