Apache Kafka

Izvietojiet Apache Kafka, izmantojot Docker Compose

Izvietojiet Apache Kafka, izmantojot Docker Compose
Uz mikroservisu orientēti dizaina modeļi ir padarījuši mūsu lietojumprogrammas mērogojamākas nekā jebkad agrāk. RESTful API serveri, priekšgals un pat datu bāzes tagad ir horizontāli mērogojami. Horizontālā mērogošana ir jaunu mezglu pievienošana lietojumprogrammu kopai, lai atbalstītu papildu slodzi. Un otrādi, tas arī ļauj samazināt resursu patēriņu, kad darba slodze samazinās, lai ietaupītu izmaksas. Horizontāli mērogojamām sistēmām jābūt sadalītām. Šīs sistēmas, kas var pārdzīvot vairāku virtuālo mašīnu, konteineru vai tīkla saišu kļūmes un joprojām ir tiešsaistē un veselīgas gala lietotājam.

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ē:

  1. Tajā pašā secībā, kādā tie tiek izveidoti,
  2. Atdalīts steidzamības ziņā (reāllaika analīze vai datu kopas), un pats galvenais,
  3. 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 -d

Labi, 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 ps

Ar kafka konteinera nosaukumu mēs tagad varam nomest iekšā šajā traukā.

$ docker exec -it apache-kafka_kafka_1 bash
bash-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 tests
bash-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 test

Atpakaļ 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:

  1. Confluent's Python klients
  2. Oficiālā dokumentācija
  3. Noderīgs demonstrāciju saraksts

Es ceru, ka jums ir jautri izpētīt Apache Kafka.

Rakstot Windows 10, kursors lec vai pārvietojas nejauši
Ja atklājat, ka peles kursors automātiski, nejauši lec vai pārvietojas pats, rakstot Windows klēpjdatorā vai datorā, daži no šiem ieteikumiem var palī...
Kā mainīt peles un skārienpaliktņu ritināšanas virzienu operētājsistēmā Windows 10
Pele un SkārienpaliktnisTas ne tikai padara skaitļošanu vienkāršu, bet arī efektīvāku un mazāk laikietilpīgu. Mēs nevaram iedomāties dzīvi bez šīm ier...
Kā mainīt peles rādītāja un kursora izmēru, krāsu un shēmu operētājsistēmā Windows 10
Peles rādītājs un kursors operētājsistēmā Windows 10 ir ļoti svarīgi operētājsistēmas aspekti. To var teikt arī par citām operētājsistēmām, tāpēc pati...