Apache Kafka
Pre definíciu na vysokej úrovni si predstavíme krátku definíciu pre Apache Kafka:
Apache Kafka je distribuovaný, odolný voči chybám, horizontálne škálovateľný protokol potvrdenia.
To bolo niekoľko slov na vysokej úrovni o Apache Kafkovi. Poďme tu podrobne pochopiť pojmy.
- Distribuovaný: Kafka rozdeľuje dáta, ktoré obsahuje, na viac serverov a každý z týchto serverov je schopný vybaviť požiadavky klientov na zdieľanie dát, ktoré obsahuje
- Odolné proti chybám: Kafka nemá jediný bod zlyhania. V systéme SPoF, ako je napríklad databáza MySQL, ak dôjde k výpadku servera, ktorý hostuje databázu, je aplikácia skomolená. V systéme, ktorý nemá SPoF a pozostáva z viacnásobných uzlov, aj keď väčšina systému spadne, je pre koncového používateľa stále rovnaký.
- Horizontálne škálovateľné: Tento druh škálovania sa týka pridania ďalších strojov do existujúceho klastra. To znamená, že Apache Kafka je schopný prijať viac uzlov vo svojom klastri a neposkytnúť žiadne prestoje na požadované aktualizácie systému. Pozrite sa na obrázok nižšie, aby ste pochopili typ škálovacích konceptov:
- Commit Log: Denník potvrdenia je dátová štruktúra rovnako ako prepojený zoznam. Pripojí akékoľvek správy, ktoré k nej prídu, a vždy zachováva ich poriadok. Údaje nie je možné z tohto denníka vymazať, kým pre tieto údaje nedosiahnete určený čas.
Vertikálne a horizontálne škálovanie
Téma v aplikácii Apache Kafka je ako front, v ktorom sú uložené správy. Tieto správy sa ukladajú na nastaviteľné množstvo času a správa sa vymaže až po uplynutí tejto doby, aj keď ich spotrebovali všetci známi spotrebitelia.
Kafka je škálovateľná, pretože sú to práve spotrebitelia, ktorí skutočne ukladajú to, čo správa, ktorú priniesli, trvá ako „offsetová“ hodnota. Pozrime sa na číslo, ktoré tomu lepšie porozumie:
Témová časť a ofset spotrebiteľa v Apache Kafka
Začíname s Apache Kafkou
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.
Ak chcete vyskúšať príklady, ktoré uvedieme neskôr v lekcii, uistite sa, že máte aktívnu inštaláciu Kafka.
Ako to funguje?
So spoločnosťou Kafka Výrobca aplikácie zverejňujú správ ktorý dorazí na Kafku Uzol a nie priamo spotrebiteľovi. Z tohto uzla Kafka správy spotrebúva Spotrebiteľ aplikácie.
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. Pokúsme sa to predstaviť:
Témové oddiely
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.
Perzistencia na disku
Kafka pretrváva záznamy správ, ktoré dostane od producentov na disku, a neuchováva ich v pamäti. Môže vzniknúť otázka, ako to robí veci uskutočniteľnými a rýchlymi? Bolo za tým niekoľko dôvodov, čo z neho robí optimálny spôsob správy záznamov správ:
- Kafka sa riadi protokolom zoskupovania záznamov správ. Producenti produkujú správy, ktoré sa perzistujú na disk vo veľkých blokoch, a spotrebitelia tieto záznamy správ spotrebúvajú aj vo veľkých lineárnych diskoch.
- Dôvod, prečo sú zápisy na disk lineárne, je ten, že to umožňuje rýchle čítanie z dôvodu výrazne zníženého času čítania lineárneho disku.
- Operácie s lineárnym diskom sú optimalizované pomocou Operačné systémy rovnako pomocou techník odpísať a čítanie dopredu.
- Moderný OS tiež používa koncept Ukladanie do vyrovnávacej pamäte stránok čo znamená, že ukladajú niektoré údaje z diskov do voľnej pamäte RAM.
- Pretože Kafka uchováva údaje v jednotných štandardných údajoch v celom toku od výrobcu k spotrebiteľovi, využíva optimalizácia nulového kopírovania procesu.
Distribúcia a replikácia údajov
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.
Aj keď je oddiel replikovaný na viacerých uzloch, stále existuje vedúci oddielu uzol, cez ktorý aplikácie čítajú a zapisujú údaje o téme, a vedúci replikuje údaje na ďalších uzloch, ktoré sa označujú ako nasledovníkov tej priečky.
Ak sú dáta záznamu správy pre aplikáciu veľmi dôležité, dá sa záruka bezpečnosti záznamu správy v jednom z uzlov zvýšiť zvýšením hodnoty replikačný faktor klastra.
Čo je Zookeeper?
Zookeeper je vysoko odolný voči chybám, distribuovaný obchod s kľúčmi a hodnotami. Apache Kafka vo veľkej miere závisí od Zookeeperu pri ukladaní mechaniky klastrov, ako je napríklad srdcový rytmus, distribúcia aktualizácií / konfigurácií atď.).
Umožňuje sprostredkovateľom Kafka prihlásiť sa na odber a vedieť, kedykoľvek došlo k akejkoľvek zmene týkajúcej sa vedúceho oddielu a distribúcie uzlov.
Aplikácie Producent a Spotrebitelia priamo komunikujú so Zookeeperom aplikácia vedieť, ktorý uzol je vedúci oddielu pre tému, aby mohli vykonávať čítanie a zápis z vedúceho oddielu.
Streaming
Streamový procesor je hlavnou súčasťou klastra Kafka, ktorý berie nepretržitý prúd údajov záznamu správ zo vstupných tém, spracováva ich a vytvára prúd údajov na výstupné témy, ktoré môžu byť čokoľvek, od koša po databázu.
Je úplne možné vykonať jednoduché spracovanie priamo pomocou API výrobcu / spotrebiteľa, aj keď pre komplexné spracovanie, ako je kombinovanie streamov, poskytuje Kafka integrovanú knižnicu Streams API, ale upozorňujeme, že toto API je určené na použitie v rámci našej vlastnej kódovej základne a nerobí to. t na makléra. Funguje to podobne ako spotrebiteľské API a pomáha nám rozšíriť prácu so spracovaním toku na viac aplikácií.
Kedy použiť Apache Kafka?
Ako sme študovali v predchádzajúcich častiach, program Apache Kafka môže byť použitý na spracovanie veľkého množstva záznamov správ, ktoré môžu patriť k skutočne nekonečnému počtu tém v našich systémoch.
Apache Kafka je ideálnym kandidátom, pokiaľ ide o používanie služby, ktorá nám umožňuje sledovať v našich aplikáciách architektúru založenú na udalostiach. Je to vďaka jeho schopnostiam vytrvalosti údajov, odolnosti voči chybám a vysoko distribuovanej architektúry, kde sa kritické aplikácie môžu spoľahnúť na jeho výkon.
Škálovateľná a distribuovaná architektúra Kafky veľmi uľahčuje integráciu s mikroslužbami a umožňuje aplikácii oddeliť sa od mnohých obchodných logík.
Vytváranie novej témy
Môžeme vytvoriť testovaciu tému testovanie na serveri Apache Kafka pomocou nasledujúceho príkazu:
Vytvorenie témy
sudo kafka-topic.sh --create --zookeeper localhost: 2181 --replikačný faktor 1--oddiely 1 --topické testovanie
S týmto príkazom sa dostaneme späť:
Vytvorte novú tému Kafka
Vytvorí sa testovacia téma, ktorú môžeme potvrdiť spomínaným príkazom:
Kafka Potvrdenie vytvorenia témy
Písanie správ na tému
Ako sme už študovali skôr, jedným z API prítomných v Apache Kafke je Producent API. Toto API použijeme na vytvorenie novej správy a zverejnenie k téme, ktorú sme práve vytvorili:
Písanie správy k téme
sudo kafka-console-producent.sh --broker-list localhost: 9092 --topické testovaniePozrime sa na výstup pre tento príkaz:
Zverejniť správu k téme Kafka
Po stlačení klávesu sa nám zobrazí nový znak šípky (>), čo znamená, že teraz môžeme údaje načítať:
Písanie správy
Stačí niečo napísať a stlačením spustiť nový riadok. Napísal som do 3 riadkov textov:
Čítanie správ z témy
Teraz, keď sme zverejnili správu o téme Kafka, ktorú sme vytvorili, táto správa tam bude nejaký konfigurovateľný čas. Teraz si ju môžeme prečítať pomocou Spotrebiteľské API:
Čítanie správ z témy
sudo kafka-console-consumer.sh --zookeeper localhost: 2181 --testovanie tém - od začiatku
S týmto príkazom sa dostaneme späť:
Príkaz na prečítanie správy od témy Kafka
Správy alebo riadky, ktoré sme napísali, uvidíme pomocou rozhrania Producer API, ako je uvedené nižšie:
Ak napíšeme ďalšiu novú správu pomocou rozhrania Producer API, okamžite sa zobrazí aj na strane spotrebiteľa:
Zverejnite a spotrebujte súčasne
Záver
V tejto lekcii sme sa pozreli na to, ako začneme používať server Apache Kafka, ktorý je vynikajúcim sprostredkovateľom správ a môže fungovať aj ako špeciálna jednotka na pretrvávanie údajov.