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:
- Ta pačia tvarka, kuria jie yra sukurti,
- Atskirai pagal skubumą (realaus laiko analizė ar duomenų paketai), o svarbiausia,
- 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 -dGerai, 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 psTurėdami „kafka“ konteinerio pavadinimą, dabar galime įlįsti į šį indą.
$ docker exec -it apache-kafka_kafka_1 bashbash-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ą testasbash-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 testasAtgal į „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ų:
- „Confluent's Python“ klientas
- Oficiali dokumentacija
- Naudingas demonstracinių versijų sąrašas
Tikiuosi, kad jums bus smagu tyrinėti Apache Kafka.