Apache Kafka

Rozdelenie Apache Kafka

Rozdelenie Apache Kafka
V tejto lekcii uvidíme, čo myslíme pod pojmom Partitioning v Apache Kafka a ako to ovplyvňuje výkon kafkovského klastra. Koncept rozdelenia na oddiely je pre klaster Kafka ústredný, pretože používa rozdelenie ako primárny spôsob škálovania a zvyšovania výkonu.

Upozorňujeme, že nejde o úvodnú lekciu. Pred pokračovaním v tejto lekcii si prečítajte Čo je Apache Kafka a ako to funguje, aby ste získali hlbší prehľad.

Témy v Kafke

Téma na Kafke je téma, na ktorú sa posiela správa. Spotrebiteľské aplikácie, ktoré sa o túto tému zaujímajú, vtiahnu správu do tejto témy a s týmito údajmi môžu robiť čokoľvek. Až do konkrétneho času môže ľubovoľný počet spotrebiteľských aplikácií vytiahnuť túto správu koľkokrát.

Zvážte tému, ako je napríklad blogová stránka Ubuntu LinuxHint. Hodiny prechádzajú do večnosti a ľubovoľný počet čitateľov nadšencov si ich môže prísť prečítať ľubovoľný počet krát alebo sa presunúť na ďalšiu hodinu podľa svojho želania. Týchto čitateľov môžu zaujímať aj ďalšie témy z LinuxHint.

Delenie tém

Program Kafka je navrhnutý na správu náročných aplikácií a na radenie veľkého množstva správ, ktoré sa nachádzajú v téme. Kvôli zaisteniu vysokej odolnosti proti chybám je každá téma rozdelená na viac oddielov tém a každá oblasť tém je spravovaná na samostatnom uzle. Ak jeden z uzlov klesne, ďalší uzol môže pôsobiť ako vedúci témy a môže serverovať témy pre zainteresovaných spotrebiteľov. Takto sa zapisujú rovnaké údaje do viacerých tematických oblastí:

Témové oddiely


Vyššie uvedený obrázok teraz ukazuje, ako sa rovnaké údaje replikujú vo viacerých oddieloch. Poďme si predstaviť, ako môžu rôzne oddiely pôsobiť ako vodca v rôznych uzloch / oddieloch:

Rozdelenie makléra Kafka

Keď klient napíše niečo k téme na pozícii, ktorej vedúcim je Partition in Broker 0, tieto údaje sa potom replikujú medzi maklérmi / uzlami, takže správa zostane bezpečná:

Replikácia naprieč maklérskymi oddielmi

Viac oddielov, vyššia priepustnosť

Kafka využíva Paralelizmus poskytovať veľmi vysokú priepustnosť výrobcom a spotrebiteľom. Rovnakým spôsobom si v skutočnosti zachováva svoj status systému veľmi odolného voči chybám. Poďme pochopiť, ako sa dosahuje vysoká priepustnosť s paralelizmom.

Keď aplikácia Producent napíše určitú správu na oddiel v aplikácii Broker 0, Kafka otvorí viac vlákien paralelne, aby bolo možné správu replikovať súčasne u všetkých vybraných sprostredkovateľov. Na strane zákazníka spotrebiteľská aplikácia spotrebúva správy z jedného oddielu prostredníctvom vlákna. Čím väčší je počet oddielov, tým viac vlákien je možné otvoriť, aby všetky mohli fungovať aj paralelne. To znamená, že čím viac je počet oddielov v klastri, tým viac sa dá využiť paralelnosť a vzniká systém s veľmi vysokou priepustnosťou.

Viac oddielov vyžaduje viac obslužných programov súborov

Aby ste si vyššie študovali, ako môžeme zvýšiť výkon systému Kafka iba zvýšením počtu oddielov. Musíme však byť opatrní, k akej hranici sa posúvame.

Každá tematická oblasť v Kafke je namapovaná na adresár v súborovom systéme sprostredkovateľa servera, kde je spustená. V tomto adresári protokolov budú dva súbory: jeden pre index a druhý pre skutočné údaje na segment log. V súčasnosti v Kafke každý sprostredkovateľ otvorí popisovač súboru pre index aj pre dátový súbor každého segmentu denníka. To znamená, že ak máte 10 000 oddielov v jednom sprostredkovateľovi, bude to mať za následok paralelné spustenie 20 000 spracovateľov súborov. Aj keď sa jedná iba o konfiguráciu sprostredkovateľa. Ak má systém, na ktorom je Broker nasadený, vysokú konfiguráciu, ťažko to bude problém.

Riziko pri vysokom počte oddielov

Ako sme videli na obrázkoch vyššie, Kafka využíva techniku ​​replikácie v rámci klastra na replikáciu správy od vedúceho do oddielov Replica, ktoré ležia v iných sprostredkovateľoch. Produkčné aj spotrebiteľské aplikácie čítajú a zapisujú do oddielu, ktorý je v súčasnosti vedúcim oddielom. Ak broker zlyhá, líder daného brokera bude nedostupný. Metaúdaje o tom, kto je vodcom, sa uchovávajú v Zookeeperi. Na základe týchto metadát priradí Kafka automaticky vedenie oddielu inému oddielu.

Keď je Broker vypnutý čistým príkazom, uzol radiča klastra Kafka presunie vodcov vypínacieho brokera sériovo i.e. jeden po druhom. ak uvažujeme o tom, že presun jedného vodcu bude trvať 5 milisekúnd, nedostupnosť vodcov nebude rušiť spotrebiteľov, pretože nedostupnosť je na veľmi krátke obdobie. Ale ak vezmeme do úvahy, že keď je Broker zabitý nečistým spôsobom a tento Broker obsahuje 5 000 oddielov, z ktorých bolo 2000 vodcov oddielov, priradenie nových vodcov pre všetky tieto oddiely bude trvať 10 sekúnd, čo je veľmi veľa, pokiaľ ide o veľmi aplikácie na požiadanie.

Záver

Ak považujeme za mysliteľa na vysokej úrovni, viac oddielov v klastri Kafka vedie k vyššej priepustnosti systému. Ak vezmeme do úvahy túto efektívnosť, treba tiež zvážiť konfiguráciu kafkovského klastra, ktorú musíme udržiavať, pamäť, ktorú musíme tomuto klastru priradiť, a ako môžeme riadiť dostupnosť a latenciu, ak sa niečo pokazí.

Prečítajte si viac príspevkov založených na Ubuntu tu a oveľa viac aj o Apache kafka.

Trackpad a ukazovateľ myši AppyMouse na obrazovke pre tablety so systémom Windows
Používateľom tabletov často chýba ukazovateľ myši, najmä keď notebooky bežne používajú. Dotykové smartphony a tablety majú veľa výhod a jediným obmedz...
Stredné tlačidlo myši nefunguje v systéme Windows 10
The stredné tlačidlo myši pomáha vám prechádzať dlhé webové stránky a obrazovky s množstvom údajov. Ak sa to zastaví, budete nakoniec používať klávesn...
Ako zmeniť ľavé a pravé tlačidlo myši na počítači so systémom Windows 10
Je úplnou normou, že všetky zariadenia počítačových myší sú ergonomicky navrhnuté pre pravákov. Existujú však dostupné myšacie zariadenia, ktoré sú šp...