Apache Kafka

Įdiekite „Apache Kafka“ naudodami „Docker Compose“

Įdiekite „Apache Kafka“ naudodami „Docker Compose“
Į mikroservisus orientuoti projektavimo modeliai padarė mūsų programas labiau keičiamas nei bet kada. RESTful API serveriai, front-end ir net duomenų bazės dabar yra horizontaliai keičiamos. Horizontalusis mastelio keitimas yra naujų mazgų pridėjimas prie programų grupės, kad būtų palaikomas papildomas darbo krūvis. Priešingai, tai taip pat leidžia sumažinti išteklių sunaudojimą, kai sumažėja darbo krūvis, kad būtų galima sutaupyti išlaidų. Horizontaliai keičiamos sistemos turi būti paskirstytos. Šios sistemos, kurios gali išgyventi sugedus keliems VM, sudėtiniams rodiniams ar tinklo nuorodoms, ir vis tiek lieka prisijungę ir sveiki galutiniam vartotojui.

Kalbėdami apie paskirstytas sistemas, kaip pirmiau, susiduriame su analizės ir stebėjimo problema. Kiekvienas mazgas generuoja daug informacijos apie savo būklę (procesoriaus naudojimą, atmintį ir kt.) Ir apie programos būseną kartu su tuo, ką bando padaryti vartotojai. Ši informacija turi būti įrašyta:

  1. Ta pačia tvarka, kuria jie yra sukurti,
  2. Atskirai pagal skubumą (realaus laiko analizė ar duomenų paketai), o svarbiausia,
  3. Jų surinkimo mechanizmas pats turi būti paskirstytas ir keičiamas, kitaip mums lieka vienas gedimo taškas. Turėjo būti vengta to, ko paskirstytos sistemos dizainas.

Kodėl verta naudoti Kafka?

„Apache Kafka“ yra platinama srautinio perdavimo platforma. Kafkos kalba, Gamintojai nuolat generuoti duomenis (srautai) ir Vartotojai yra atsakingi už jo apdorojimą, saugojimą ir analizavimą. Kafka Brokeriai yra atsakingi už tai, kad paskirstytu scenarijumi duomenis gamintojai vartotojams galėtų pasiekti be nenuoseklumo. Vadinamas „Kafka“ brokerių rinkinys ir dar viena programinė įranga zoologijos sodo prižiūrėtojas sudaro tipišką „Kafka“ dislokavimą.

Daugelio gamintojų duomenų srautas turi būti apibendrintas, padalytas ir išsiųstas keliems vartotojams. Vengti nenuoseklumo nėra lengva užduotis. Štai kodėl mums reikia Kafkos.

Scenarijai, kai „Kafka“ galima naudoti, yra gana įvairūs. Viskas, pradedant IOT įrenginiais, baigiant VM grupėmis, ir baigiant jūsų pačių patalpų plika metalo serveriais. Bet kur, kur daugybė dalykų vienu metu nori jūsų dėmesio .. .Tai nėra labai moksliška? Na, Kafkos architektūra yra sava triušio skylė ir nusipelno savarankiško gydymo. Pirmiausia pažiūrėkime, kaip programinė įranga įdiegta labai paviršiaus lygiu.

„Docker Compose“ naudojimas

Bet kokiu vaizduotės būdu nuspręsite naudoti „Kafka“, vienas dalykas yra tikras - nenaudosite jo kaip vieno egzemplioriaus. Ji nėra skirta naudoti tokiu būdu, ir net jei jūsų platinamai programai kol kas reikia tik vieno egzemplioriaus (brokerio), ji galų gale augs ir turite įsitikinti, kad „Kafka“ gali neatsilikti.

„Docker-compose“ yra puikus tokio mastelio partneris. Vietoj to, kad paleistume „Kafka“ brokerius skirtingose ​​VM, mes jį talpiname ir pasitelkiame „Docker Compose“, kad automatizuotume diegimą ir mastelį. „Docker“ talpyklos yra labai keičiamos tiek atskiruose „Docker“ kompiuteriuose, tiek visoje grupėje, jei mes naudojame „Docker Swarm“ arba „Kubernetes“. Taigi prasminga tai panaudoti, kad „Kafka“ būtų keičiama.

Pradėkime nuo vieno brokerio pavyzdžio. Sukurkite katalogą, pavadintą „apache-kafka“, ir jame sukurkite „docker-compose“.yml.

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

Toliau pateiktas turinys bus įdėtas į jūsų doko kūrėją.yml failas:

versija: „3“
paslaugos:
zoologijos sodo prižiūrėtojas:
vaizdas: wurstmeister / zookeeper
 
kafka:
vaizdas: wurstmeister / kafka
uostai:
- "9092: 9092"
aplinka:
KAFKA_ADVERTISED_HOST_NAME: vietinis šeimininkas
KAFKA_ZOOKEEPER_CONNECT: zoologijos sargas: 2181

Išsaugoję aukščiau pateiktą turinį savo kūrimo faile, paleiskite tą patį katalogą:

$ docker-compose up -d

Gerai, tai ką mes čia padarėme?

Supratimas apie „Docker-Compose“.yml

Sukūrus bus paleistos dvi paslaugos, išvardytos yml faile. Pažvelkime į failą šiek tiek atidžiai. Pirmasis vaizdas yra zoologijos sargas, kurio „Kafka“ reikalauja stebėti įvairius brokerius, tinklo topologiją ir sinchronizuoti kitą informaciją. Kadangi „zookeeper“ ir „kafka“ paslaugos bus to paties tilto tinklo dalis (tai sukuriama paleidus „docker-compose“), mums nereikia atidaryti jokių uostų. „Kafka“ brokeris gali pasikalbėti su zoologijos sodo prižiūrėtoju ir viskas, ko reikia zoologijos sodo prižiūrėtojui.

Antroji paslauga yra pati „kafka“ ir mes tiesiog valdome vieną jos pavyzdį, tai yra vieną brokerį. Idealiu atveju norėtumėte pasitelkti kelis brokerius, kad panaudotumėte paskirstytą „Kafka“ architektūrą. Paslauga klausosi 9092 prievado, kuris yra susietas su tuo pačiu „Docker“ pagrindinio kompiuterio prievado numeriu ir taip tarnyba bendrauja su išoriniu pasauliu.

Antroji paslauga taip pat turi keletą aplinkos kintamųjų. Pirma, „KAFKA_ADVERTISED_HOST_NAME“ nustatyta į „localhost“. Tai yra adresas, kuriuo „Kafka“ veikia, ir kur jį gali rasti gamintojai ir vartotojai. Vėlgi, tai turėtų būti nustatyta į „localhost“, o ne į IP adresą arba pagrindinio kompiuterio pavadinimą, todėl serverius galima pasiekti jūsų tinkle. Antra yra jūsų zoologijos sodo paslaugos pagrindinio kompiuterio vardas ir prievado numeris. Kadangi mes pavadinome zoologijos sodo tarnybą ... Na, zoologijos sargas yra toks, koks bus pagrindinio kompiuterio vardas, paminėtame doko tilto tinkle.

Vykdomas paprastas pranešimų srautas

Kad Kafka pradėtų dirbti, turime sukurti joje temą. Tada gamintojai klientai gali paskelbti duomenų srautus (pranešimus) minėta tema, o vartotojai gali perskaityti minėtą duomenų srautą, jei jie yra užsiprenumeravę tą konkrečią temą.

Norėdami tai padaryti, turime pradėti interaktyvų terminalą su „Kafka“ konteineriu. Išvardinkite konteinerius, kad gautumėte kafka konteinerio pavadinimą. Pvz., Šiuo atveju mūsų talpykla vadinama apache-kafka_kafka_1

$ dokeris ps

Turėdami „kafka“ konteinerio pavadinimą, dabar galime įlįsti į šį indą.

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

Atidarykite du tokius skirtingus terminalus, kad naudotumėte vieną kaip vartotoją ir kitą gamintoją.

Gamintojo pusė

Viename iš raginimų (tame, kurį pasirenkate būti prodiuseriu) įveskite šias komandas:

## Norėdami sukurti naują temą, pavadintą testas
bash-4.4 # kafka-temos.sh --create - zookeeper zookeeper: 2181 - replikacijos koeficientas 1
--1 skirsnis - temos testas
 
## Norėdami sukurti gamintoją, kuris skelbia duomenų srautą nuo standartinio įvesties iki „kafka“
bash-4.4 # kafka-console-producer.sh - broker-list localhost: 9092 - temos testas
>

Dabar gamintojas yra pasirengęs priimti informaciją iš klaviatūros ir ją paskelbti.

Vartotojo pusė

Pereikite prie antrojo terminalo, prijungto prie jūsų kafka konteinerio. Ši komanda paleidžia vartotoją, kuris naudojasi testo tema:

$ kafka-konsolė-vartotojas.sh --bootstrap-server localhost: 9092 - temos testas

Atgal į „Producer“

Dabar galite įvesti pranešimus naujoje eilutėje ir kaskart paspaudę kliento eilutėje atspausdinama nauja eilutė. Pavyzdžiui:

> Tai yra pranešimas.

Šis pranešimas perduodamas vartotojui per „Kafka“, ir jūs galite pamatyti jį atspausdintą vartotojo raginime.

Tikrojo pasaulio sąrankos

Dabar jūs turite apytikslį vaizdą apie tai, kaip veikia „Kafka“ sąranka. Savo asmeniniam naudojimui turite nustatyti pagrindinio kompiuterio pavadinimą, kuris nėra vietinis, jums reikia kelių tokių brokerių, kurie būtų jūsų „kafka“ klasterio dalis, ir galiausiai turite įsteigti vartotojų ir gamintojų klientus.

Čia yra keletas naudingų nuorodų:

  1. „Confluent's Python“ klientas
  2. Oficiali dokumentacija
  3. Naudingas demonstracinių versijų sąrašas

Tikiuosi, kad jums bus smagu tyrinėti Apache Kafka.

Žymeklis peršoka arba juda atsitiktinai, kai rašote „Windows 10“
Jei pastebite, kad pelės žymeklis peršoka arba juda pats, automatiškai, atsitiktinai, kai vedate „Windows“ nešiojamąjį kompiuterį ar kompiuterį, kai k...
Kaip pakeisti pelės ir jutiklinių plokščių slinkimo kryptį sistemoje „Windows 10“
Pelė ir Jutiklinė dalisTai ne tik palengvina skaičiavimus, bet ir efektyvesnį bei mažiau laiko reikalaujantį. Mes neįsivaizduojame gyvenimo be šių pri...
Kaip pakeisti pelės žymeklio ir žymeklio dydį, spalvą ir schemą sistemoje „Windows 10“
„Windows 10“ pelės žymeklis ir žymeklis yra labai svarbūs operacinės sistemos aspektai. Tai galima pasakyti ir apie kitas operacines sistemas, taigi, ...