Apache Kafka

Telepítse az Apache Kafka alkalmazást a Docker Compose használatával

Telepítse az Apache Kafka alkalmazást a Docker Compose használatával
A mikroszolgáltatás-orientált tervezési minták skálázhatóbbá tették az alkalmazásokat, mint valaha. A RESTful API szerverek, a front-end és még az adatbázisok is vízszintesen méretezhetők. A vízszintes méretezés új csomópontok hozzáadását jelenti az alkalmazásfürthez a további munkaterhelés támogatása érdekében. Ezzel szemben lehetővé teszi az erőforrás-fogyasztás csökkentését, amikor a munkaterhelés csökken, a költségek megtakarítása érdekében. A vízszintesen méretezhető rendszereket elosztott rendszerrel kell ellátni. Ezek a rendszerek képesek túlélni több virtuális gép, tároló vagy hálózati kapcsolat meghibásodását, és továbbra is online és egészséges állapotban maradnak a végfelhasználó számára.

Amikor a fentiekhez hasonló elosztott rendszerekről beszélünk, az elemzés és a monitorozás problémájába ütközünk. Minden csomópont rengeteg információt generál saját állapotáról (CPU-használat, memória stb.) És az alkalmazás állapotáról, valamint arról, hogy a felhasználók mit próbálnak megtenni. Ezeket a részleteket a következő helyen kell rögzíteni:

  1. Ugyanabban a sorrendben, amelyben létrejönnek,
  2. Külön a sürgősség szempontjából (valós idejű elemzés vagy adatcsomagok), és ami a legfontosabb,
  3. A begyűjtés mechanizmusának önmagában elosztottnak és skálázhatónak kell lennie, különben egyetlen hibapont marad. Valamit el kellett kerülni az elosztott rendszer tervezésétől.

Miért használja a Kafkát??

Az Apache Kafka elosztott streaming platformként szerepel. Kafka nyelven, Producerek folyamatosan adatokat generál (patakok) és Fogyasztók felelősek annak feldolgozásáért, tárolásáért és elemzéséért. Kafka Brókerek felelősek annak biztosításáért, hogy egy elosztott forgatókönyv esetén az adatok minden következetlenség nélkül eljuthassanak a gyártóktól a fogyasztókig. Egy sor Kafka bróker és egy másik szoftver állatgondozó tipikus Kafka-bevetést jelentenek.

A sok gyártó adatfolyamát összesíteni kell, fel kell osztani és több fogyasztónak kell elküldeni, sok a keverés. A következetlenség elkerülése nem könnyű feladat. Ezért van szükségünk Kafkára.

A forgatókönyvek, ahol a Kafka használható, meglehetősen változatos. Bármi, az IOT-eszközöktől kezdve a virtuális gépek klaszterén át a saját helyszíni, csupasz fém szerverekig. Bárhol, ahol egyszerre sok „dolog” szeretné felhívni a figyelmet .. .Ez nem túl tudományos? Nos, a Kafka építészet egy saját nyúllyuk, és önálló kezelést érdemel. Először nézzük meg a szoftver nagyon felszíni telepítését.

A Docker Compose használata

Bármilyen fantáziadús módon dönt a Kafka használata mellett, egy biztos: nem fogja egyetlen példányként használni. Nem ezt a célt szolgálják, és még akkor is, ha az elosztott alkalmazásnak egyelőre csak egy példányra (brókerre) van szüksége, végül növekedni fog, és meg kell győződnie arról, hogy a Kafka képes lépést tartani.

A Docker-compose tökéletes partner az ilyen méretezhetőséghez. Ahelyett, hogy különböző virtuális gépeken futtatnánk a Kafka brókereket, konténerezzük, és a Docker Compose-t felhasználjuk a telepítés és a méretezés automatizálásához. A Docker konténerek nagyon skálázhatók mind az egyes Docker gazdagépeken, mind a fürtön, ha Docker Swarmot vagy Kubernetes-t használunk. Tehát van értelme kihasználni, hogy a Kafka méretezhető legyen.

Kezdjük egyetlen bróker példánnyal. Hozzon létre egy Apache-kafka nevű könyvtárat, és benne hozza létre a dokkoló-írást.yml.

$ mkdir apache-kafka
$ cd apache-kafka
$ vim dokkoló-ír.yml

A következő tartalmak kerülnek a dokkoló-íróba.yml fájl:

verzió: '3'
szolgáltatások:
állatgondozó:
kép: wurstmeister / zookeeper
 
kafka:
kép: wurstmeister / kafka
portok:
- "9092: 9092"
környezet:
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ZOOKEEPER_CONNECT: állattartó: 2181

Miután elmentette a fenti tartalmat az írási fájlba, ugyanabból a könyvtárból futtassa:

$ docker-compose up -d

Oké, akkor mit csináltunk itt?

A Docker-Compose megértése.yml

A Compose két szolgáltatást indít, az yml fájlban felsoroltak szerint. Nézzük meg egy kicsit alaposan a fájlt. Az első kép az állattartó, amelyet a Kafka megkövetel a különféle brókerek, a hálózati topológia, valamint az egyéb információk szinkronizálásához. Mivel a zookeeper és a kafka szolgáltatások is ugyanazon hídhálózat részei lesznek (ez akkor jön létre, amikor a docker-compose-t futtatjuk), nem kell feltennünk egyetlen portot sem. A Kafka bróker tud beszélni az állattartóval, és csak erre van szüksége a zookeepernek.

A második szolgáltatás maga a kafka, és mi csak egyetlen példányt futtatunk, vagyis egy brókert. Ideális esetben több brókert szeretne használni a Kafka elosztott architektúrájának kihasználása érdekében. A szolgáltatás meghallgatja a 9092-es portot, amely a Docker Host ugyanazon portszámára van leképezve, és így kommunikál a szolgáltatás a külvilággal.

A második szolgáltatásnak van néhány környezeti változója is. Először: a KAFKA_ADVERTISED_HOST_NAME beállítása localhost. Ez az a cím, ahol a Kafka fut, és ahol a gyártók és a fogyasztók megtalálhatják. Ismét ennek a localhost-nak kell lennie, inkább IP-címre vagy hosztnévre kell állítani ezzel a szerverek elérhetők a hálózaton. A második az állattartó szolgáltatás hosztneve és portszáma. Mivel elneveztük a zookeeper szolgáltatást ... Nos, a zookeeper az, ami a hosztnév lesz, az említett docker bridge hálózatban.

Egyszerű üzenetfolyam lefuttatása

Ahhoz, hogy Kafka dolgozni kezdjen, létre kell hoznunk benne egy témát. A termelő ügyfelek ezután közzétehetik az adatfolyamokat (üzeneteket) az említett témában, a fogyasztók pedig elolvashatják az említett adatfolyamot, ha feliratkoztak az adott témára.

Ehhez el kell indítanunk egy interaktív terminált a Kafka konténerrel. Sorolja fel a konténereket a kafka konténer nevének lekéréséhez. Például ebben az esetben a tárolónk neve apache-kafka_kafka_1

$ dokkoló ps

A kafka konténer nevével most bele tudunk esni ebbe a konténerbe.

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

Nyisson meg két ilyen különböző terminált, hogy az egyiket fogyasztóként és másik gyártóként használja.

Gyártói oldal

Írja be a következő parancsokat az egyik kérésbe (amelyet producerként választ):

## Új teszt nevű témakör létrehozása
bash-4.4 # kafka-topic.sh --create --zookeeper zookeeper: 2181 - replikációs tényező 1
--partíciók 1 - témakör teszt
 
## Olyan gyártó indítása, amely adatfolyamot közöl a standard bemenettől a kafkáig
bash-4.4 # kafka-konzol-producer.sh - broker-list localhost: 9092 --téma teszt
>

A producer készen áll arra, hogy bevegye a billentyűzetet és közzétegye.

Fogyasztói oldal

Lépjen a kafka-tárolóhoz csatlakoztatott második terminálra. A következő parancs elindítja a fogyasztót, amely a teszt témájáról táplálkozik:

$ kafka-konzol-fogyasztó.sh --bootstrap-server localhost: 9092 --téma teszt

Vissza a Producerhez

Mostantól beírhatja az üzeneteket az új promptba, és bármikor visszatérhet, az új sor pedig kinyomtatásra kerül a fogyasztói üzenetben. Például:

> Ez egy üzenet.

Ezt az üzenetet a Kafka-n keresztül továbbítja a fogyasztóhoz, és a fogyasztói üzenetben kinyomtathatja.

Valós világ beállításai

Most durván képet kaphat arról, hogyan működik a Kafka telepítése. Saját használatra be kell állítania egy hostnevet, amely nem localhost, több ilyen közvetítőre van szüksége, hogy részt vegyen a kafka-fürtben, végül pedig fel kell állítania fogyasztói és termelői ügyfeleket.

Íme néhány hasznos link:

  1. Confluent Python kliense
  2. Hivatalos dokumentáció
  3. A demók hasznos listája

Remélem, jól érzi magát Apache Kafka felfedezésében.

Az Xdotool használata az egérkattintások és a billentyűleütések ösztönzéséhez Linux alatt
Az Xdotool egy ingyenes és nyílt forráskódú parancssori eszköz az egérkattintások és a billentyűleütések szimulálására. Ez a cikk egy rövid útmutatót ...
A top 5 ergonómikus számítógépes egértermék Linuxhoz
Hosszan tartó számítógép-használat okoz-e fájdalmat a csuklóján vagy az ujjain?? Merev ízületek szenvednek, és folyamatosan kezet kell rázniuk? Égő fá...
Az egér és az érintőpad beállításainak módosítása az Xinput használatával Linux alatt
A legtöbb Linux disztribúció alapértelmezés szerint „libinput” könyvtárral szállítja a rendszer bemeneti eseményeit. Feldolgozhatja a Wayland és az X ...