V tejto lekcii uvidíme, čo je Apache Kafka a ako funguje spolu s jeho najbežnejšími prípadmi použitia. Apache Kafka bol pôvodne vyvinutý na LinkedIn v roku 2010 a od roku 2012 sa stal projektom Apache na najvyššej úrovni. Má tri hlavné komponenty:
- Vydavateľ-predplatiteľ: Táto súčasť je zodpovedná za efektívne spravovanie a doručovanie údajov v rámci uzlov Kafka a spotrebiteľských aplikácií, ktoré sa zväčšujú (napríklad doslovne).
- Pripojte API: Connect API je najužitočnejšou funkciou pre Kafku a umožňuje integráciu Kafky s mnohými externými zdrojmi údajov a záchytmi údajov.
- Potoky Kafka: Pomocou prúdov Kafka môžeme zvážiť spracovanie prichádzajúcich údajov vo veľkom rozsahu v reálnom čase.
V ďalších častiach si naštudujeme oveľa viac konceptov Kafky. Poďme ďalej.
Koncepty Apache Kafka
Predtým, ako sa pustíme hlbšie, musíme si dôkladne prečítať niektoré koncepty v Apache Kafke. Tu sú výrazy, ktoré by sme mali vedieť, veľmi stručne:
-
- Výrobca: Toto je aplikácia, ktorá posiela správy Kafkovi
- Spotrebiteľ: Toto je aplikácia, ktorá spotrebúva údaje od Kafky
- Správa: Údaje, ktoré sú odosielané aplikáciou Producent do aplikácie pre spotrebiteľa prostredníctvom Kafky
- Pripojenie: Kafka nadväzuje TCP spojenie medzi klastrom Kafka a aplikáciami
- Téma: A Topic is a category to which sent data is tagged and delivery to interested consumer applications
- Témová oblasť: Pretože jedna téma môže získať veľa údajov naraz, aby bola Kafka horizontálne škálovateľná, je každá téma rozdelená na oddiely a každý oddiel môže žiť na ľubovoľnom uzlovom stroji klastra. Pokúsme sa to predstaviť:
Témové oddiely
- Repliky: Ako sme študovali vyššie, že téma je rozdelená na oddiely, každý záznam správy sa replikuje na viacerých uzloch klastra, aby sa zachovalo poradie a údaje každého záznamu v prípade, že jeden z uzlov zomrie.
- Skupiny spotrebiteľov: Viacero spotrebiteľov, ktorí sa zaujímajú o rovnakú tému, možno držať v skupine, ktorá sa označuje ako skupina spotrebiteľov
- Ofset: Kafka je škálovateľná, pretože sú to práve spotrebitelia, ktorí skutočne ukladajú, ktorá správa bola načítaná naposledy, ako hodnota „offsetu“. To znamená, že pre rovnakú tému môže mať ofset spotrebiteľa A hodnotu 5, čo znamená, že musí ďalej spracovať šiesty paket, a pre spotrebiteľa B môže byť hodnota ofsetu 7, čo znamená, že bude musieť spracovať ďalší ôsmy paket. To úplne odstránilo závislosť na ukladaní týchto metaúdajov týkajúcich sa každého spotrebiteľa od samotnej témy.
- Uzol: Uzol je počítač so samostatným serverom v klastri Apache Kafka.
- Klaster: Klaster je skupina uzlov i.e., skupina serverov.
Koncept témy, oddielov tém a odsadenia je možné objasniť aj ilustračným obrázkom:
Témová časť a ofset spotrebiteľa v Apache Kafka
Apache Kafka as Publish-subscribe messaging system
V prípade aplikácie Kafka aplikácie Producent zverejňujú správy, ktoré prichádzajú na uzol Kafka, a nie priamo k spotrebiteľovi. Z tohto uzla Kafka sú správy spotrebované aplikáciami Consumer.
Výrobca a spotrebiteľ spoločnosti Kafka
Pretože jedna téma môže získať veľa údajov naraz, je každá téma rozdelená na, aby bola Kafka horizontálne škálovateľná priečky a každý oddiel môže žiť na ľubovoľnom uzlovom stroji klastra.
Spoločnosť Kafka Broker opäť nevedie záznamy o tom, ktorý spotrebiteľ spotreboval koľko paketov údajov. Je to zodpovednosť spotrebiteľov za sledovanie údajov, ktoré spotrebovala. Z dôvodu, že Kafka nesleduje potvrdenia a správy každej spotrebiteľskej aplikácie, môže spravovať oveľa viac spotrebiteľov so zanedbateľným vplyvom na priepustnosť. Pri výrobe veľa aplikácií dokonca sleduje vzorec dávkových spotrebiteľov, čo znamená, že spotrebiteľ spotrebuje všetky správy vo fronte v pravidelnom časovom intervale.
Inštalácia
Ak chcete začať používať Apache Kafka, musí byť na počítači nainštalovaný. Ak to chcete urobiť, prečítajte si článok Inštalácia Apache Kafka na Ubuntu.
Prípad použitia: Sledovanie používania webových stránok
Kafka je vynikajúci nástroj, ktorý sa dá použiť, keď potrebujeme sledovať aktivitu na webovej stránke. Údaje o sledovaní zahŕňajú okrem iného zobrazenia stránky, vyhľadávania, nahrávania alebo iné akcie, ktoré môžu používatelia vykonať. Keď sa používateľ nachádza na webových stránkach, môže pri surfovaní na webe vykonať ľubovoľný počet akcií.
Napríklad, keď sa nový používateľ zaregistruje na webovej stránke, je možné sledovať aktivitu v akom poradí nový používateľ preskúma funkcie webovej stránky, ak si užívateľ nastaví svoj profil podľa potreby alebo uprednostňuje priamy prístup k vlastnostiam webovej stránky. webovú stránku. Kedykoľvek používateľ klikne na tlačidlo, metadáta pre toto tlačidlo sa zhromaždia v dátovom pakete a odošlú sa do kafkovského klastra, odkiaľ môže analytická služba pre aplikáciu tieto údaje zhromažďovať a vytvárať užitočné informácie o súvisiacich údajoch. Ak sa pozrieme na rozdelenie úloh na kroky, bude vyzerať tento postup:
- Používateľ sa zaregistruje na webovej stránke a vstúpi na informačný panel. Používateľ sa pokúsi o prístup k funkcii okamžite pomocou tlačidla.
- Webová aplikácia vytvorí správu s týmito metadátami do tematického oddielu témy „kliknutie“.
- Správa sa pripojí k protokolu potvrdenia a posun sa zvýši
- Spotrebiteľ môže teraz prevziať správu od sprostredkovateľa Kafka a zobraziť použitie webových stránok v reálnom čase a zobraziť minulé údaje, ak obnoví svoj offset na možnú minulú hodnotu
Prípad použitia: Fronta správ
Apache Kafka je vynikajúci nástroj, ktorý môže slúžiť ako náhrada za nástroje na sprostredkovanie správ, ako je RabbitMQ. Asynchrónne zasielanie správ pomáha pri odpájaní aplikácií a vytvára vysoko škálovateľný systém.
Rovnako ako koncept mikroslužieb, aj namiesto budovania jednej veľkej aplikácie môžeme aplikáciu rozdeliť na viac častí a každá časť nesie veľmi konkrétnu zodpovednosť. Týmto spôsobom je možné rôzne časti písať aj v úplne nezávislých programovacích jazykoch! Kafka má zabudovaný systém rozdelenia, replikácie a odolnosti proti chybám, vďaka ktorému je dobrý ako rozsiahly systém sprostredkovania správ.
V poslednej dobe sa spoločnosť Kafka považuje aj za veľmi dobré riešenie na zhromažďovanie protokolov, ktoré dokáže spravovať sprostredkovateľa servera na zhromažďovanie protokolových súborov a poskytovať tieto súbory centrálnemu systému. Pomocou Kafky je možné vygenerovať ľubovoľnú udalosť, o ktorej chcete, aby sa dozvedela ktorákoľvek iná časť vašej aplikácie.
Používanie Kafky na LinkedIn
Je zaujímavé poznamenať, že server Apache Kafka bol už skôr videný a používaný ako prostriedok na zabezpečenie konzistentnosti dátových tokov a na prijímanie údajov do systému Hadoop. Kafka pracoval vynikajúco, keď bolo prítomných viac zdrojov údajov a cieľov, a poskytnutie samostatného procesu pre každú kombináciu zdroja a cieľa nebolo možné. Jay Kreps, architekt Kafky z LinkedIn, dobre popisuje tento známy problém v blogovom príspevku:
Moja vlastná angažovanosť v tomto sa začala okolo roku 2008 po tom, čo sme odoslali náš obchod s kľúčovými hodnotami. Ďalším mojím projektom bolo pokúsiť sa naštartovať funkčné nastavenie Hadoop a presunúť tam niektoré naše procesy odporúčaní. Keďže sme v tejto oblasti nemali dostatok skúseností, prirodzene sme si stanovili rozpočet na niekoľko týždňov na získavanie a vypúšťanie údajov a zvyšok času na implementáciu efektných predikčných algoritmov. Tak sa začal dlhý slog.
Apache Kafka a Flume
Ak sa presuniete na porovnanie týchto dvoch na základe ich funkcií, nájdete veľa spoločných funkcií. Tu sú niektoré z nich:
- Odporúča sa používať Kafku, ak máte viac aplikácií, ktoré dáta spotrebúvajú, namiesto aplikácie Flume, ktorá je špeciálne vyrobená na integráciu s Hadoop a dá sa použiť iba na príjem dát do HDFS a HBase. Flume je optimalizovaný pre operácie HDFS.
- Pri spoločnosti Kafka je nevýhodou kódovanie výrobcov a aplikácií pre spotrebiteľa, zatiaľ čo vo Flume má veľa zabudovaných zdrojov a výleviek. To znamená, že ak sa existujúce potreby zhodujú s funkciami Flume, odporúčame vám ušetriť čas použitím samotného Flume.
- Spoločnosť Flume môže spotrebovať údaje za letu pomocou zachytávačov. Môže to byť dôležité pre maskovanie a filtrovanie údajov, zatiaľ čo Kafka potrebuje externý systém na spracovanie toku.
- Je možné, že Kafka použije Flume ako spotrebiteľa, keď potrebujeme prijať dáta do HDFS a HBase. To znamená, že Kafka a Flume sa integrujú naozaj dobre.
- Spoločnosti Kakfa a Flume môžu zaručiť nulovú stratu údajov pri správnej konfigurácii, ktorú je tiež ľahké dosiahnuť. Napriek tomu, aby sme zdôraznili, Flume nereplikuje udalosti, čo znamená, že ak jeden z uzlov Flume zlyhá, stratíme prístup k udalostiam, kým sa disk neobnoví
Záver
V tejto lekcii sme sa pozreli na veľa konceptov o Apache Kafkovi. Prečítajte si viac príspevkov založených na Kafke tu.