Apache Kafka

Postavite Apache Kafka pomoću Docker Compose

Postavite Apache Kafka pomoću Docker Compose
Uzorci dizajna orijentirani na mikro usluge učinili su naše aplikacije skalabilnijima nego ikad. API-poslužitelji RESTful, front-end, pa čak i baze podataka sada su horizontalno skalabilni. Horizontalno skaliranje je čin dodavanja novih čvorova u vaš aplikacijski klaster za podršku dodatnom radnom opterećenju. Suprotno tome, također omogućuje smanjenje potrošnje resursa, kada se radno opterećenje smanjuje, kako bi se uštedjeli troškovi. Horizontalno skalabilni sustavi trebaju biti distribuirani sustav. Ovi sustavi mogu preživjeti neuspjeh više VM-ova, spremnika ili mrežnih veza, a i dalje ostaju na mreži i zdravi za krajnjeg korisnika.

Kada govorimo o distribuiranim sustavima kao gore, nailazimo na problem analitike i praćenja. Svaki čvor generira puno informacija o vlastitom zdravlju (upotreba procesora, memorija itd.) I o statusu aplikacije zajedno s onim što korisnici pokušavaju učiniti. Ovi detalji moraju biti zabilježeni u:

  1. Isti redoslijed kojim su stvoreni,
  2. Odvojeno u smislu hitnosti (analitika u stvarnom vremenu ili skupine podataka), i što je najvažnije,
  3. Mehanizam s kojim se prikupljaju mora sam biti distribuiran i skalabilan, inače nam ostaje samo jedna točka kvara. Nešto što je dizajn distribuiranog sustava trebao izbjegavati.

Zašto koristiti Kafku?

Apache Kafka predstavljen je kao distribuirana platforma za streaming. Na kafkom jeziku, Proizvođači kontinuirano generirati podatke (potoci) i Potrošači odgovorni su za njegovu obradu, pohranu i analizu. Kafka Brokeri odgovorni su za osiguravanje da u distribuiranom scenariju podaci mogu doći od proizvođača do potrošača bez ikakve nedosljednosti. Skup Kafkinih brokera i još jedan softver nazvan čuvar zoo vrta predstavljaju tipično raspoređivanje Kafke.

Tok podataka mnogih proizvođača treba objediniti, podijeliti i poslati više potrošača, tu je uključeno puno miješanja. Izbjegavanje nedosljednosti nije lak zadatak. Zbog toga nam je potreban Kafka.

Scenariji u kojima se Kafka može koristiti prilično su raznoliki. Bilo što, od IOT uređaja do klastera VM-ova do vlastitih gotovih metalnih poslužitelja. Bilo gdje gdje puno 'stvari' istovremeno želi vašu pažnju .. .To nije baš znanstveno, zar ne? Pa, arhitektura Kafke je zečja rupa za sebe i zaslužuje neovisan tretman. Pogledajmo prvo primjenu softvera na vrlo površinskoj razini.

Korištenje Docker Compose

Na koji god maštovit način odlučili upotrijebiti Kafku, jedno je sigurno - nećete ga koristiti kao jednu instancu. Nije namijenjena da se koristi na taj način, pa čak i ako vaša distribuirana aplikacija za sada treba samo jedan primjerak (posrednik), ona će na kraju narasti i morate biti sigurni da Kafka može pratiti.

Docker-compose savršen je partner za ovu vrstu skalabilnosti. Umjesto da pokrećemo Kafka brokere na različitim VM-ovima, mi ga sadržavamo i koristimo Docker Compose za automatizaciju postavljanja i skaliranja. Dockerovi spremnici vrlo su skalabilni na oba pojedinačna Dockerova hosta, kao i na klasteru ako koristimo Docker Swarm ili Kubernetes. Stoga ima smisla iskoristiti ga kako bi Kafka postao skalabilan.

Počnimo s jednim primjerom brokera. Stvorite direktorij koji se zove apache-kafka i u njemu stvorite svoj docker-compose.yml.

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

Sljedeći sadržaj stavit će se u vaš docker-compose.yml datoteka:

inačica: '3'
usluge:
čuvar zoo vrta:
slika: wurstmeister / čuvar zoološkog vrta
 
kafka:
slika: wurstmeister / kafka
luke:
- "9092: 9092"
okoliš:
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ZOOKEEPER_CONNECT: čuvar zoološkog vrta: 2181

Nakon što spremite gornji sadržaj u datoteku za sastavljanje, iz istog direktorija pokrenite:

$ docker-compose up -d

Ok, pa što smo radili ovdje?

Razumijevanje Docker-Compose.yml

Sastavljanje će pokrenuti dvije usluge kako su navedene u yml datoteci. Pogledajmo datoteku malo pomnije. Prva slika je čuvar zoološkog vrta kojeg Kafka traži kako bi pratio razne brokere, topologiju mreže kao i sinkronizaciju ostalih informacija. Budući da će i usluge čuvara zoološkog vrta i kafka biti dio iste mreže mostova (to se stvara kada pokrenemo docker-compose up), ne trebamo izlagati nijednu luku. Kafka broker može razgovarati sa čuvarom zoološkog vrta i to je sve što zoološki čuvar treba.

Druga usluga je sama kafka, a mi upravo pokrećemo jednu instancu, odnosno jedan broker. Idealno bi bilo da želite koristiti više brokera kako biste iskoristili distribuiranu arhitekturu Kafke. Usluga preslušava na portu 9092 koji je preslikan na isti broj porta na Docker Hostu i na taj način usluga komunicira s vanjskim svijetom.

Druga usluga također ima nekoliko varijabli okruženja. Prvo, je li KAFKA_ADVERTISED_HOST_NAME postavljen na localhost. Ovo je adresa na kojoj Kafka radi i gdje je proizvođači i potrošači mogu pronaći. Još jednom, ovo bi trebalo biti postavljeno na localhost, već na IP adresu ili naziv hosta s kojim se poslužitelji mogu dobiti u vašoj mreži. Drugo je ime hosta i broj porta vaše usluge čuvara zoološkog vrta. Budući da smo nazvali uslugu zookeeper ... dobro, zookeeper to će biti ime hosta, unutar mreže mostova dockera koje smo spomenuli.

Pokretanje jednostavnog tijeka poruke

Da bi Kafka počeo raditi, moramo u njemu stvoriti temu. Klijenti proizvođača mogu zatim objaviti tokove podataka (poruka) na navedenu temu, a potrošači mogu pročitati navedeni tok podataka ako su pretplaćeni na tu temu.

Da bismo to učinili, moramo pokrenuti interaktivni terminal s Kafka spremnikom. Navedite spremnike da biste dohvatili ime kafka spremnika. Na primjer, u ovom se slučaju naš spremnik zove apache-kafka_kafka_1

$ docker ps

S imenom kafka spremnika, sada možemo ući u ovaj spremnik.

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

Otvorite dva tako različita terminala da biste jedan koristili kao potrošača i kao drugog proizvođača.

Producentska strana

U jedan od upita (onaj koji ste odabrali da bude producent) unesite sljedeće naredbe:

## Za stvaranje nove teme s nazivom test
bash-4.4 # kafka-teme.sh --create --zookeeper čuvar zoološkog vrta: 2181 - faktor replikacije 1
--pregrade 1 - tematski test
 
## Za pokretanje proizvođača koji objavljuje tok podataka od standardnog unosa do kafke
bash-4.4 # kafka-proizvođač konzola.sh --broker-list localhost: 9092 - tematski test
>

Producent je sada spreman uzeti unos s tipkovnice i objaviti ga.

Potrošačka strana

Pomaknite se do drugog terminala spojenog na vaš kafka spremnik. Sljedeća naredba pokreće potrošača koji se hrani testnom temom:

$ kafka-konzola-potrošač.sh --bootstrap-server localhost: 9092 - test teme

Natrag producentu

Sada možete upisivati ​​poruke u novi upit i svaki put kad pritisnete return novi se redak ispisuje u korisničkom odzivu. Na primjer:

> Ovo je poruka.

Ova se poruka prenosi potrošaču putem Kafke, a možete je vidjeti ispisanu u korisničkom odzivu.

Postavljanje u stvarnom svijetu

Sada imate okvirnu sliku o tome kako funkcionira postavljanje Kafke. Za vlastiti slučaj upotrebe, morate postaviti ime hosta koje nije localhost, trebate više takvih brokera da budu dio vašeg kafka klastera i na kraju trebate postaviti potrošačke i proizvođačke klijente.

Evo nekoliko korisnih poveznica:

  1. Python klijent Confluenta
  2. Službena dokumentacija
  3. Koristan popis demonstracija

Nadam se da ćete se zabaviti istražujući Apachea Kafku.

Bitka za Wesnoth 1.13.6 Razvoj objavljen
Bitka za Wesnoth 1.13.6 objavljeno prošlog mjeseca, šesto je razvojno izdanje u izdanju 1.13.x series i donosi niz poboljšanja, ponajviše korisničkog ...
Kako instalirati League Of Legends na Ubuntu 14.04
Ako ste ljubitelj League of Legends, ovo je prilika za vas da testirate League of Legends. Imajte na umu da je LOL podržan na PlayOnLinux ako ste kori...
Instalirajte najnoviju strategiju igre OpenRA na Ubuntu Linux
OpenRA je Libre / Free Real Time strateški pokretač igre koji stvara rane Westwoodove igre poput klasične Command & Conquer: Red Alert. Distribuirani ...