Runājot par izplatītām sistēmām, piemēram, iepriekš, mēs saskaramies ar analīzes un uzraudzības problēmu. Katrs mezgls ģenerē daudz informācijas par savu veselību (procesora lietojumu, atmiņu utt.) Un par lietojumprogrammas statusu, kā arī ar to, ko lietotāji mēģina darīt. Šī informācija jāreģistrē:
- Tajā pašā secībā, kādā tie tiek izveidoti,
- Atdalīts steidzamības ziņā (reāllaika analīze vai datu kopas), un pats galvenais,
- Mehānismam, ar kuru tie tiek savākti, pašam jābūt sadalītam un mērogojamam, pretējā gadījumā mums paliek viens neveiksmes punkts. Bija paredzēts izvairīties no kaut kā izplatītās sistēmas dizaina.
Kāpēc lietot Kafka?
Apache Kafka tiek atzīta par izplatītas straumēšanas platformu. Kafkas valodā, Ražotāji nepārtraukti ģenerēt datus (straumi) un Patērētāji ir atbildīgi par tā apstrādi, uzglabāšanu un analīzi. Kafka Brokeri ir atbildīgi par to, lai izplatītā scenārijā datus no ražotājiem un patērētājiem varētu sasniegt bez jebkādas pretrunas. Tiek saukts Kafka brokeru komplekts un vēl viena programmatūra zoodārznieks veido tipisku Kafka izvietošanu.
Daudzu ražotāju datu plūsma ir jāapkopo, jāsadala un jānosūta vairākiem patērētājiem, ir daudz sajaukšanas. Izvairīšanās no neatbilstības nav viegls uzdevums. Tāpēc mums vajag Kafku.
Scenāriji, kur Kafka var izmantot, ir diezgan dažādi. Viss, sākot no IOT ierīcēm līdz VM kopām un beidzot ar jūsu pašu vietējiem tukša metāla serveriem. Jebkur, kur daudzas lietas vienlaikus vēlas jūsu uzmanību .. .Tas nav ļoti zinātniski, vai ne? Nu, Kafka arhitektūra ir pati sava trušu bedre un ir pelnījusi neatkarīgu attieksmi. Vispirms redzēsim programmatūras izvietošanu ļoti virsmas līmenī.
Docker Compose izmantošana
Lai kādā izdomātā veidā jūs nolemjat izmantot Kafka, viena lieta ir droša - jūs to neizmantosit kā vienu gadījumu. Tas nav paredzēts lietošanai šādā veidā, un pat ja jūsu izplatītajai lietotnei pagaidām ir nepieciešams tikai viens gadījums (brokeris), tā galu galā pieaugs, un jums jāpārliecinās, vai Kafka var sekot.
Docker-compose ir ideāls partneris šāda veida mērogojamībai. Tā vietā, lai palaistu Kafka brokerus dažādos VM, mēs to konteinerizējam un izmantojam Docker Compose, lai automatizētu izvietošanu un mērogošanu. Docker konteineri ir ļoti pielāgojami gan atsevišķiem Docker resursdatoriem, gan arī pāri kopai, ja mēs izmantojam Docker Swarm vai Kubernetes. Tāpēc ir lietderīgi to izmantot, lai padarītu Kafka mērogojamu.
Sāksim ar vienu brokera gadījumu. Izveidojiet direktoriju ar nosaukumu apache-kafka un iekšpusē izveidojiet savu docker-compose.yml.
$ mkdir apache-kafka$ cd apache-kafka
$ vim docker-compose.yml
Docker-compose tiks ievietots šāds saturs.yml fails:
versija: '3'pakalpojumi:
zoodārznieks:
attēls: wurstmeister / zookeeper
kafka:
attēls: wurstmeister / kafka
ostas:
- "9092: 9092"
vide:
KAFKA_ADVERTISED_HOST_NAME: vietējais saimnieks
KAFKA_ZOOKEEPER_CONNECT: zoodārza turētājs: 2181
Kad esat saglabājis iepriekš minēto saturu rakstīšanas failā, palaidiet to pašu direktoriju:
$ docker-compose up -dLabi, ko tad mēs šeit darījām?
Izpratne par Docker-Compose.yml
Rakstīšana sāks divus pakalpojumus, kas uzskaitīti yml failā. Apskatīsim failu nedaudz uzmanīgi. Pirmais attēls ir zookeeper, kas Kafka ir nepieciešams, lai sekotu dažādiem brokeriem, tīkla topoloģijai, kā arī citas informācijas sinhronizēšanai. Tā kā gan zookeeper, gan kafka pakalpojumi būs daļa no tā paša tilta tīkla (tas tiek izveidots, palaižot docker-compose), mums nav jāatklāj neviena osta. Kafka brokeris var sarunāties ar zooloģisko uzraugu, un tas ir viss, kas zookeeper vajadzībām.
Otrais pakalpojums ir pati kafka, un mēs vienkārši vadām vienu tā instanci, tas ir, vienu brokeri. Ideālā gadījumā jūs vēlaties izmantot vairākus brokerus, lai izmantotu Kafka izplatīto arhitektūru. Pakalpojums klausās portā 9092, kas tiek kartēts uz to pašu porta numuru Docker resursdatorā, un tas ir veids, kā pakalpojums sazinās ar ārpasauli.
Otrajā pakalpojumā ir arī daži vides mainīgie. Pirmkārt, KAFKA_ADVERTISED_HOST_NAME ir iestatīts uz localhost. Šī ir adrese, kurā darbojas Kafka un kur ražotāji un patērētāji to var atrast. Atkal tam jābūt iestatītam uz localhost, bet gan IP adresei vai resursdatora nosaukumam, ar kuru serverus var sasniegt jūsu tīklā. Otrais ir jūsu zooloģiskā dienesta servera resursdatora nosaukums un porta numurs. Tā kā mēs nosaucām zookeeper pakalpojumu ... labi, zookeeper tas ir saimniekdatora nosaukums, ko mēs pieminējām docker bridge tīklā.
Palaist vienkāršu ziņojumu plūsmu
Lai Kafka sāktu strādāt, mums tajā jāizveido tēma. Pēc tam ražotāji klienti var publicēt datu plūsmas (ziņojumus) uz minēto tēmu, un patērētāji var izlasīt minēto datplūsmu, ja viņi ir abonējuši šo konkrēto tēmu.
Lai to izdarītu, mums jāsāk interaktīvs terminālis ar Kafka konteineru. Sarakstiet konteinerus, lai izgūtu kafka konteinera nosaukumu. Piemēram, šajā gadījumā mūsu konteinera nosaukums ir apache-kafka_kafka_1
$ dokers psAr kafka konteinera nosaukumu mēs tagad varam nomest iekšā šajā traukā.
$ docker exec -it apache-kafka_kafka_1 bashbash-4.4 #
Atveriet divus tik dažādus terminālus, lai izmantotu vienu kā patērētāju un citu ražotāju.
Ražotāja puse
Vienā no uzvednēm (tajā, kuru izvēlaties producēt) ievadiet šādas komandas:
## Lai izveidotu jaunu tēmu ar nosaukumu testsbash-4.4 # kafka-tēmas.sh --create - zookeeper zookeeper: 2181 - replikācijas koeficients 1
--1. nodalījums - tēmas pārbaude
## Lai sāktu ražotāju, kas publicē datplūsmu no standarta ievades kafka
bash-4.4 # kafka-konsole-ražotājs.sh - brokeru saraksta localhost: 9092 - topic test
>
Tagad producents ir gatavs ņemt ievadi no tastatūras un to publicēt.
Patērētāja puse
Pārvietojieties uz otro termināli, kas savienots ar jūsu kafka konteineru. Ar šo komandu tiek palaists patērētājs, kurš izmanto testa tēmu:
$ kafka-konsole-patērētājs.sh - bootstrap-server localhost: 9092 - topic testAtpakaļ pie producenta
Tagad jūs varat ierakstīt ziņojumus jaunajā uzvednē, un ikreiz, kad nospiedīsit atgriezties, jaunā rindiņa tiek drukāta patērētāja uzvednē. Piemēram:
> Šis ir ziņojums.Šis ziņojums tiek nosūtīts patērētājam caur Kafka, un jūs to varat redzēt iespiestu patērētāja uzvednē.
Reālās pasaules iestatījumi
Tagad jums ir aptuvens priekšstats par Kafka iestatīšanas darbību. Jūsu pašu lietošanai jums jāiestata resursdatora nosaukums, kas nav vietējais resursdators, jums ir vajadzīgi vairāki šādi brokeri, lai būtu daļa no jūsu kafka klastera, un visbeidzot jums ir jāizveido patērētāju un ražotāju klienti.
Šeit ir dažas noderīgas saites:
- Confluent's Python klients
- Oficiālā dokumentācija
- Noderīgs demonstrāciju saraksts
Es ceru, ka jums ir jautri izpētīt Apache Kafka.