Apache Kafka

Nasaďte Apache Kafka pomocou Docker Compose

Nasaďte Apache Kafka pomocou Docker Compose
Dizajnové vzory orientované na mikroslužby robili naše aplikácie škálovateľnejšími ako kedykoľvek predtým. Servery RESTful API, klientske rozhranie a dokonca aj databázy sú teraz horizontálne škálovateľné. Horizontálne škálovanie je akt pridávania nových uzlov do vášho aplikačného klastra na podporu ďalšieho pracovného zaťaženia. Naopak, umožňuje tiež znížiť spotrebu zdrojov pri znížení pracovného zaťaženia, aby sa tak znížili náklady. Horizontálne škálovateľné systémy musia byť distribuované. Tieto systémy, ktoré dokážu prežiť zlyhanie viacerých virtuálnych počítačov, kontajnerov alebo sieťových odkazov a stále zostať online a zdravé pre koncového používateľa.

Keď hovoríme o distribuovaných systémoch, ako je uvedené vyššie, narazíme na problém analytiky a monitorovania. Každý uzol generuje veľa informácií o svojom zdraví (využitie procesora, pamäte atď.) A o stave aplikácie spolu s tým, čo sa používatelia snažia robiť. Tieto podrobnosti musia byť zaznamenané v:

  1. Rovnaké poradie, v akom sú vytvorené,
  2. Oddelené z hľadiska naliehavosti (analýza v reálnom čase alebo dávky údajov), a čo je najdôležitejšie,
  3. Samotný mechanizmus, pomocou ktorého sa zhromažďujú, musí byť distribuovaný a škálovateľný, inak nám zostáva jediný bod zlyhania. Niečo, čomu sa mal dizajn distribuovaného systému vyhnúť.

Prečo používať Kafku?

Apache Kafka má postavenie distribuovanej streamovacej platformy. V jazyku Kafka lingo, Výrobcovia nepretržite generovať údaje (potoky) a Spotrebitelia sú zodpovední za ich spracovanie, uchovávanie a analýzu. Kafka Sprostredkovatelia sú zodpovední za zabezpečenie toho, aby v distribuovanom scenári mohli údaje prichádzať od výrobcov k spotrebiteľom bez akýchkoľvek rozporov. Sada sprostredkovateľov Kafka a ďalší softvér nazvaný ošetrovateľ v zoo predstavuje typické nasadenie Kafky.

Je potrebné zhromaždiť, rozdeliť a odoslať tok údajov od mnohých výrobcov viacerým spotrebiteľom, je potrebné veľa miešania. Vyvarovanie sa nesúladu nie je ľahká úloha. Preto potrebujeme Kafku.

Scenáre, kde je možné použiť Kafku, sú pomerne rozmanité. Čokoľvek od zariadení IOT až po klaster virtuálnych počítačov až po vaše vlastné lokálne servery typu bare metal. Všade tam, kde veľa vecí vyžaduje vašu pozornosť .. .Nie je to príliš vedecké? Architektúra Kafka je samostatná králikáreň a zaslúži si nezávislé zaobchádzanie. Najprv sa pozrime na veľmi povrchové nasadenie softvéru.

Používanie Docker Compose

Nech už sa rozhodnete použiť Kafku akýmkoľvek nápaditým spôsobom, jedna vec je istá - nebudete ju používať ako jednu inštanciu. Nie je to myslené tak, že by sa to malo používať, a aj keď vaša distribuovaná aplikácia potrebuje zatiaľ iba jednu inštanciu (sprostredkovateľa), nakoniec sa rozrastie a musíte sa ubezpečiť, že Kafka dokáže držať krok.

Docker-compose je dokonalým partnerom pre tento druh škálovateľnosti. Namiesto spustenia sprostredkovateľov Kafka na rôznych virtuálnych počítačoch to kontajnerizujeme a využívame Docker Compose na automatizáciu nasadenia a škálovania. Kontajnery Docker sú vysoko škálovateľné na jednotlivých hostiteľoch Docker aj v rámci klastra, ak používame Docker Swarm alebo Kubernetes. Takže má zmysel využiť to, aby bola Kafka škálovateľná.

Začnime s jednou inštanciou sprostredkovateľa. Vytvorte adresár s názvom apache-kafka a v ňom vytvorte docker-compose.yml.

$ mkdir apache-kafka
$ cd apache-kafka
$ vim docker-compose.yml

Nasledujúci obsah bude vložený do vášho docker-compose.yml súbor:

verzia: '3'
služby:
ošetrovateľ v zoo:
obrázok: wurstmeister / zookeeper
 
kafka:
obrázok: wurstmeister / kafka
prístavy:
- „9092: 9092“
prostredie:
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ZOOKEEPER_CONNECT: zookeeper: 2181

Po uložení vyššie uvedeného obsahu do komponovaného súboru z rovnakého adresára spustite:

$ docker-compose up -d

Dobre, tak čo sme tu robili?

Pochopenie Docker-Compose.yml

Program Compose spustí dve služby uvedené v súbore yml. Pozrime sa na súbor trochu zblízka. Prvý obrázok je zookeeper, ktorý Kafka vyžaduje na sledovanie rôznych sprostredkovateľov, topológie siete a tiež na synchronizáciu ďalších informácií. Pretože služby zookeeper aj kafka budú súčasťou rovnakej mostnej siete (vytvorí sa pri spustení docker-compose up), nemusíme vystavovať žiadne porty. Sprostredkovateľ spoločnosti Kafka môže hovoriť so zookeeperom a to je všetko, čo zo zootechnik potrebuje.

Druhá služba je samotná kafka a my práve prevádzkujeme jej jednu inštanciu, to znamená jedného sprostredkovateľa. V ideálnom prípade by ste chceli využiť viacerých sprostredkovateľov, aby ste využili distribuovanú architektúru Kafky. Služba počúva na porte 9092, ktorý je namapovaný na rovnaké číslo portu na Docker Host, a tak služba komunikuje s vonkajším svetom.

Druhá služba má tiež niekoľko premenných prostredia. Po prvé, je KAFKA_ADVERTISED_HOST_NAME nastavený na localhost. Toto je adresa, na ktorej Kafka beží, a kde ju môžu nájsť výrobcovia a spotrebitelia. Toto by malo byť opäť nastavenie na localhost, ale skôr na adresu IP alebo názov hostiteľa, vďaka čomu sú servery vo vašej sieti dostupné. Druhým je názov hostiteľa a číslo portu vašej služby zookeeper. Pretože sme pomenovali službu zookeeper ... no, zookeeper je to, čo bude názov hostiteľa, v rámci docker bridge siete, ktorú sme spomenuli.

Prebieha tok jednoduchých správ

Aby Kafka začal pracovať, musíme si v rámci neho vytvoriť tému. Produkční klienti potom môžu publikovať prúdy dát (správ) k uvedenej téme a spotrebitelia môžu čítať uvedený dátový tok, ak sú prihlásení na odber konkrétnej témy.

Aby sme to dosiahli, musíme spustiť interaktívny terminál s kontajnerom Kafka. Zoznam kontajnerov na získanie názvu kontajnera kafka. Napríklad v tomto prípade sa náš kontajner volá apache-kafka_kafka_1

$ docker ps

S menom kontajnera kafka teraz môžeme spadnúť do tohto kontajnera.

$ docker exec -it apache-kafka_kafka_1 bash
bash-4.4 #

Otvorte dva rôzne terminály, aby ste mohli jeden používať ako spotrebiteľ a druhý ako producent.

Strana producenta

V jednej z výziev (v tej, ktorú ste vybrali ako producenta) zadajte nasledujúce príkazy:

## Vytvorenie novej témy s názvom test
bash-4.4 # kafka-topic.sh --create --zookeeper zookeeper: 2181 --replikačný faktor 1
--skupiny 1 --topický test
 
## Naštartovanie producenta, ktorý zverejňuje dátový tok od štandardného vstupu po kafku
bash-4.4 # kafka-console-producent.sh --broker-list localhost: 9092 --topický test
>

Výrobca je teraz pripravený prevziať vstup z klávesnice a zverejniť ho.

Strana spotrebiteľa

Prejdite na druhý terminál pripojený k vášmu kontajneru kafka. Nasledujúci príkaz spustí spotrebiteľa, ktorý sa živí testovanou témou:

$ kafka-konzola-spotrebiteľ.sh --bootstrap-server localhost: 9092 --topický test

Späť na výrobcu

Teraz môžete do novej výzvy zadávať správy a vždy, keď kliknete na návrat, sa nový riadok vytlačí v spotrebiteľskej výzve. Napríklad:

> Toto je správa.

Táto správa sa prenáša k spotrebiteľovi prostredníctvom služby Kafka a vy ju môžete vidieť vytlačenú na výzvu spotrebiteľa.

Skutočné nastavenia

Teraz máte približný obraz o tom, ako nastavenie Kafka funguje. Pre svoje vlastné použitie musíte nastaviť názov hostiteľa, ktorý nie je localhost, potrebujete viac takýchto sprostredkovateľov, aby boli súčasťou vášho kafka klastra a nakoniec musíte nastaviť klientov pre spotrebiteľov a producentov.

Tu je niekoľko užitočných odkazov:

  1. Confluent's Python Client
  2. Úradná dokumentácia
  3. Užitočný zoznam ukážok

Dúfam, že sa pri objavovaní Apache Kafky zabavíte.

Hry Najlepšie hry na hranie s ručným sledovaním
Najlepšie hry na hranie s ručným sledovaním
Oculus Quest nedávno predstavil skvelú myšlienku ručného sledovania bez ovládačov. Vďaka stále sa zvyšujúcemu počtu hier a aktivít, ktoré vykonávajú p...
Hry Ako zobraziť prekrytie OSD v linuxových aplikáciách a hrách na celú obrazovku
Ako zobraziť prekrytie OSD v linuxových aplikáciách a hrách na celú obrazovku
Hranie hier na celú obrazovku alebo používanie aplikácií v režime rozptýlenia zadarmo na celú obrazovku vás môže odrezať od relevantných systémových i...
Hry Top 5 kariet na zachytávanie hier
Top 5 kariet na zachytávanie hier
Všetci sme videli a milovali streamovanie hier na YouTube. PewDiePie, Jakesepticye a Markiplier sú iba niektorí z najlepších hráčov, ktorí zarobili mi...