Apache Kafka

Razporedite Apache Kafka s pomočjo Docker Compose

Razporedite Apache Kafka s pomočjo Docker Compose
Vzorci oblikovanja, usmerjeni v mikro storitve, so naše aplikacije naredili bolj prilagodljive kot kdaj koli prej. Strežniki API RESTful, front-end in celo baze podatkov so zdaj vodoravno prilagodljivi. Horizontalno skaliranje je dodajanje novih vozlišč v gručo aplikacij za podporo dodatne obremenitve. Nasprotno pa omogoča tudi zmanjšanje porabe virov, ko se delovna obremenitev zmanjša, da prihranite stroške. Horizontalno razširljive sisteme je treba distribuirati. Ti sistemi lahko preživijo okvare več VM-jev, vsebnikov ali omrežnih povezav, kljub temu pa ostanejo v spletu in zdravi za končnega uporabnika.

Ko govorimo o porazdeljenih sistemih, kot smo zgoraj, naletimo na problem analitike in spremljanja. Vsako vozlišče ustvari veliko informacij o svojem lastnem zdravju (poraba procesorja, pomnilnik itd.) In o stanju aplikacije, skupaj s tem, kar uporabniki skušajo narediti. Te podrobnosti je treba zabeležiti v:

  1. Isti vrstni red, v katerem so ustvarjeni,
  2. Ločeno glede na nujnost (sprotna analitika ali serije podatkov) in kar je najpomembnejše,
  3. Mehanizem, s katerim se zbirajo, mora biti sam porazdeljen in razširljiv, sicer nam ostane ena sama točka okvare. Nekaj, čemur naj bi se izognila zasnova porazdeljenega sistema.

Zakaj uporabljati Kafko?

Apache Kafka je postavljen kot porazdeljena pretočna platforma. V kafkaškem jeziku, Proizvajalci neprekinjeno generirati podatke (potoki) in Potrošniki so odgovorni za njegovo obdelavo, shranjevanje in analizo. Kafka Posredniki so odgovorni za zagotavljanje, da lahko v porazdeljenem scenariju podatki pridejo od proizvajalcev do potrošnikov brez kakršne koli nedoslednosti. Nabor posrednikov Kafka in še en del programske opreme oskrbnik živalskega vrta predstavljajo tipično uporabo Kafke.

Tok podatkov mnogih proizvajalcev je treba združiti, razdeliti in poslati več potrošnikom, vpletenih je veliko premeščanja. Izogibanje nedoslednosti ni lahka naloga. Zato potrebujemo Kafko.

Scenariji, kjer je mogoče uporabiti Kafko, so precej raznoliki. Vse od naprav IOT do gruče VM-jev do vaših lastnih golo kovinskih strežnikov. Kjer koli, kjer veliko "stvari" hkrati želi vašo pozornost .. .To ni zelo znanstveno, kajne? No, arhitektura Kafke je zajčja luknja zase in si zasluži neodvisno obravnavo. Najprej si oglejmo uvedbo programske opreme na zelo površinskem nivoju.

Uporaba Docker Compose

Na kakršen koli domiseln način se boste odločili za uporabo Kafke, eno je gotovo - ne boste ga uporabljali kot en primerek. Ni namenjen za uporabo na ta način, in četudi vaša distribuirana aplikacija za zdaj potrebuje le en primerek (posrednik), bo sčasoma rasla in morate zagotoviti, da Kafka lahko sledi.

Docker-compose je popoln partner za tovrstno razširljivost. Namesto da bi zagnali posrednike Kafka na različnih VM, ga hranimo in uporabimo Docker Compose za avtomatizacijo uvajanja in spreminjanja velikosti. Zabojniki Docker so zelo razširljivi tako na posameznih gostiteljih Docker kot tudi v celotni gruči, če uporabljamo Docker Swarm ali Kubernetes. Zato ga je smiselno izkoristiti, da bo Kafka prilagodljiv.

Začnimo z enim primerkom posrednika. Ustvarite imenik z imenom apache-kafka in v njem ustvarite svoj docker-compose.yml.

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

Naslednja vsebina bo vnesena v vaš docker-compose.yml datoteka:

različica: '3'
storitve:
oskrbnik živalskega vrta:
slika: wurstmeister / čuvaj živalskega vrta
 
kafka:
slika: wurstmeister / kafka
vrata:
- "9092: 9092"
okolje:
KAFKA_ADVERTISED_HOST_NAME: lokalni gostitelj
KAFKA_ZOOKEEPER_CONNECT: skrbnik živalskega vrta: 2181

Ko shranite zgornjo vsebino v datoteko za sestavljanje, iz istega imenika zaženite:

$ docker-compose up -d

V redu, kaj smo torej počeli tukaj?

Razumevanje Docker-Compose.yml

Sestavljanje bo zagnalo dve storitvi, kot sta navedeni v datoteki yml. Poglejmo si datoteko nekoliko natančneje. Prva slika je skrbnik živalskega vrta, ki ga Kafka potrebuje za spremljanje različnih posrednikov, topologijo omrežja in sinhronizacijo drugih informacij. Ker bosta tako storilca zoo in kafka del istega mostnega omrežja (to se ustvari, ko zaženemo docker-compose up), nam ni treba izpostaviti nobenih vrat. Posrednik Kafka se lahko pogovori z skrbnikom živalskega vrta in to je vse, kar potrebuje skrbnik živalskega vrta.

Druga storitev je kafka sama in izvajamo samo en primerek, to je en posrednik. V idealnem primeru bi radi uporabili več posrednikov, da bi izkoristili porazdeljeno arhitekturo Kafke. Storitev posluša na vrati 9092, ki je preslikana na isto številko vrat na gostitelju Docker in tako storitev komunicira z zunanjim svetom.

Druga storitev ima tudi nekaj spremenljivk okolja. Najprej je KAFKA_ADVERTISED_HOST_NAME nastavljen na localhost. To je naslov, na katerem deluje Kafka in kjer ga lahko najdejo proizvajalci in potrošniki. Še enkrat bi to morali nastaviti na localhost, temveč na naslov IP ali ime gostitelja, s katerim je strežnike mogoče doseči v vašem omrežju. Drugič je ime gostitelja in številka vrat vaše storitve čuvaja živalskega vrta. Ker smo poimenovali storitev zookeeper ... no, zookeeper to bo tisto ime gostitelja, znotraj omrežja docker bridge, ki smo ga omenili.

Zagon preprostega sporočila

Da bi Kafka začel delovati, moramo v njem ustvariti temo. Nato lahko odjemalci proizvajalca objavijo tokove podatkov (sporočil) na omenjeno temo, potrošniki pa lahko preberejo omenjeni podatkovni tok, če so naročeni na to temo.

Za to moramo z vsebnikom Kafka zagnati interaktivni terminal. Navedite vsebnike, da pridobite ime vsebnika kafka. Na primer, v tem primeru se naš vsebnik imenuje apache-kafka_kafka_1

$ docker ps

Z imenom kafka vsebnika lahko zdaj spustimo v ta vsebnik.

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

Odprite dva tako različna terminala, če želite enega uporabiti kot drugega kot proizvajalca.

Producentska stran

V enega od pozivov (tistega, ki ste ga izbrali za producenta) vnesite naslednje ukaze:

## Ustvariti novo temo z imenom test
bash-4.4 # kafka-teme.sh --create --zookeeper čuvaj živalskega vrta: 2181 - faktor replikacije 1
--particije 1 - tematski test
 
## Za zagon proizvajalca, ki objavlja tok podatkov od standardnega vnosa do kafke
bash-4.4 # kafka-proizvajalec konzole.sh --broker-list localhost: 9092 --top test
>

Producent je zdaj pripravljen sprejeti vnos s tipkovnice in ga objaviti.

Potrošniška stran

Pomaknite se do drugega terminala, priključenega na vaš zabojnik kafka. Naslednji ukaz zažene potrošnika, ki se hrani s testno temo:

$ kafka-konzola-potrošnik.sh --bootstrap-server localhost: 9092 --preizkus teme

Nazaj na proizvajalca

Zdaj lahko v novi poziv vtipkate sporočila in vsakič, ko pritisnete return, se nova vrstica natisne v poziv za potrošnika. Na primer:

> To je sporočilo.

To sporočilo se pošlje potrošniku prek Kafke in ga lahko vidite natisnjenega v pozivu potrošnika.

Nastavitve v resničnem svetu

Zdaj imate približno sliko o tem, kako deluje nastavitev Kafke. Za lastno uporabo morate nastaviti ime gostitelja, ki ni localhost, več takšnih posrednikov potrebujete, da so del vašega grozda kafka, na koncu pa morate nastaviti odjemalce potrošnikov in proizvajalcev.

Tu je nekaj uporabnih povezav:

  1. Naročnik Python Confluent
  2. Uradna dokumentacija
  3. Koristni seznam predstavitev

Upam, da se boste zabavali z raziskovanjem Apacheja Kafke.

Kako namestiti in igrati Doom v Linuxu
Uvod v Doom Serija Doom je nastala v devetdesetih letih po izidu prvotnega Dooma. Bil je takojšen hit in od takrat naprej je serija iger prejela števi...
Vulkan za uporabnike Linuxa
Z vsako novo generacijo grafičnih kart vidimo, da razvijalci iger premikajo meje grafične zvestobe in se približujejo fotorealizmu. A kljub vsem kredi...
OpenTTD vs Simutrans
Ustvarjanje lastne simulacije prevoza je lahko zabavno, sproščujoče in izjemno vabljivo. Zato morate preizkusiti čim več iger, da boste našli tisto, k...