Apache Kafka

Apache Kafka pamoka

Apache Kafka pamoka
Šioje pamokoje pamatysime, kaip galime naudoti „Apache Kafka“ ir koks yra jos panaudojimas. Mes nuodugniai išnagrinėsime įvairias su tuo susijusias terminologijas ir pradėsime jas dirbti.

Apache Kafka

Norėdami pateikti aukšto lygio apibrėžimą, pateikime trumpą Apache Kafka apibrėžimą:

„Apache Kafka“ yra paskirstytas, atsparus trikdžiams, horizontaliai keičiamo dydžio įsipareigojimų žurnalas.

Tai buvo aukšto lygio žodžiai apie Apache Kafka. Leiskite mums išsamiai suprasti sąvokas čia.

„Apache Kafka“ tema yra tarsi eilė, kurioje saugomi pranešimai. Šie pranešimai saugomi konfigūruojamą laiką ir pranešimas neištrinamas, kol pasiekiamas šis laikas, net jei jį vartojo visi žinomi vartotojai.

„Kafka“ yra keičiamo dydžio, nes vartotojai iš tikrųjų saugo, kad jų gautas pranešimas paskutinį kartą yra „kompensuojama“ vertė. Pažvelkime į figūrą, kad tai geriau suprastume:

Temos skaidymas ir vartotojų kompensavimas „Apache Kafka“

Darbo su Apache Kafka pradžia

Norėdami pradėti naudoti „Apache Kafka“, jis turi būti įdiegtas kompiuteryje. Norėdami tai padaryti, skaitykite „Apache Kafka“ diegimas „Ubuntu“.

Įsitikinkite, kad turite aktyvų „Kafka“ diegimą, jei norite išbandyti pavyzdžius, kuriuos pateikiame vėliau pamokoje.

Kaip tai veikia?

Su Kafka Prodiuseris programos skelbia žinutes kuris atvažiuoja prie Kafkos Mazgas o ne tiesiogiai Vartotojui. Iš šio „Kafka“ mazgo pranešimus vartoja Vartotojas programos.

„Kafka“ gamintojas ir vartotojas


Kadangi viena tema vienu metu gali gauti daug duomenų, kad „Kafka“ būtų horizontaliai keičiama, kiekviena tema yra suskirstyta į pertvaros ir kiekvienas skaidinys gali gyventi bet kurioje klasterio mazgo mašinoje. Pabandykime tai pateikti:

Temos pertvaros


Vėlgi, „Kafka Broker“ nesurašo, kuris vartotojas sunaudojo kiek duomenų paketų. Tai yra vartotojų atsakomybė sekti suvartotus duomenis.

Atkaklumas diskui

„Kafka“ neišsaugo pranešimų įrašų, kuriuos gauna iš gamintojų, diske ir nelaiko jų atmintyje. Gali kilti klausimas, kaip tai daro viską įmanoma ir greita? Tai lėmė kelios priežastys, dėl kurių tai optimalus būdas tvarkyti pranešimų įrašus:

Duomenų platinimas ir replikavimas

Kaip mes anksčiau ištyrėme, kad tema yra padalinta į skaidinius, kiekvienas pranešimų įrašas yra replikuojamas keliuose klasterio mazguose, siekiant išlaikyti kiekvieno įrašo tvarką ir duomenis tuo atveju, jei vienas iš mazgų miršta.

Nors skaidinys atkartojamas keliuose mazguose, vis tiek yra pertvaros vadovas mazgas, per kurį programos skaito ir rašo duomenis apie temą, o vadovas atkartoja kitų mazgų duomenis, kurie vadinami pasekėjų tos pertvaros.

Jei pranešimų įrašo duomenys yra labai svarbūs programai, garantija, kad pranešimų įrašas bus saugus viename iš mazgų, gali būti padidintas padidinant replikacijos koeficientas klasterio.

Kas yra „Zookeeper“?

„Zookeeper“ yra labai tolerantiška gedimams, paskirstyta raktų vertės parduotuvė. „Apache Kafka“ labai priklauso nuo „Zookeeper“, kad saugotų klasterių mechaniką, pvz., Širdies plakimą, naujienų / konfigūracijų platinimą ir kt.).

Tai leidžia „Kafka“ brokeriams užsiprenumeruoti save ir žinoti, kai įvyko koks nors pasikeitimas dėl skaidinio vadovo ir mazgo paskirstymo.

Gamintojų ir vartotojų programos tiesiogiai bendrauja su „Zookeeper“ programa žinoti, kuris mazgas yra temos skaidinio vadovas, kad jie galėtų skaityti ir rašyti iš skaidinio vadovo.

Srautas

Srauto procesorius yra pagrindinis „Kafka“ sankaupos komponentas, kuris nuolat priima pranešimų įrašų duomenų srautą iš įvesties temų, apdoroja šiuos duomenis ir sukuria duomenų srautą iki išvesties temų, kurios gali būti bet kokios, nuo šiukšliadėžės iki duomenų bazės.

Visiškai įmanoma atlikti paprastą apdorojimą tiesiogiai naudojant gamintojo / vartotojo API, nors sudėtingam apdorojimui, pvz., Srautų sujungimui, „Kafka“ teikia integruotą „Stream“ API biblioteką, tačiau atkreipkite dėmesį, kad ši API skirta naudoti mūsų pačių kodų bazėje ir to nereikia “ t paleisti pas brokerį. Tai veikia panašiai kaip vartotojų API ir padeda mums išplėsti srauto apdorojimo darbą keliose programose.

Kada vartoti Apache Kafka?

Kaip mes studijavome ankstesniuose skyriuose, „Apache Kafka“ gali būti naudojama daugeliui pranešimų įrašų, kurie gali priklausyti beveik begaliniam mūsų sistemų temų skaičiui, tvarkyti.

„Apache Kafka“ yra idealus kandidatas, kai reikia naudotis paslauga, kuri gali leisti mums vadovautis įvykių architektūra mūsų programose. Taip yra dėl duomenų patvarumo, gedimams atsparios ir labai paskirstytos architektūros galimybių, kai kritinės programos gali pasikliauti jos našumu.

Dėl keičiamo mastelio ir paskirstytos „Kafka“ architektūros labai lengva integruotis su mikroservisomis ir leidžia programai atsiriboti nuo daugybės verslo logikų.

Naujos temos kūrimas

Mes galime sukurti bandomąją temą testavimas „Apache Kafka“ serveryje naudodami šią komandą:

Kurkite temą

sudo kafka-temos.sh --create --zookeeper localhost: 2181 - replikacijos koeficientas 1
--1 skirsnis - temų testavimas

Štai ką mes grąžiname naudodami šią komandą:

Sukurkite naują „Kafka“ temą


Bus sukurta testavimo tema, kurią galime patvirtinti minėta komanda:

„Kafka“ temos kūrimo patvirtinimas

Pranešimų rašymas temoje

Kaip mes anksčiau tyrėme, viena iš „Apache Kafka“ esančių API yra Gamintojo API. Šią API naudosime kurdami naują pranešimą ir skelbdami ką tik sukurtą temą:

Rašyti pranešimą į temą

sudo kafka-konsolės gamintojas.sh - broker-list localhost: 9092 - temų testavimas

Pažiūrėkime šios komandos išvestį:

Paskelbkite pranešimą „Kafka“ temoje


Kai paspausime klavišą, pamatysime naują rodyklės (>) ženklą, o tai reiškia, kad dabar galime pateikti duomenis:

Rašyti žinutę


Tiesiog įveskite ką nors ir paspauskite, kad pradėtumėte naują eilutę. Įvedžiau 3 teksto eilutes:

Pranešimų skaitymas iš temos

Dabar, kai mes paskelbėme pranešimą savo sukurtoje „Kafka“ temoje, šis pranešimas bus kurį laiką konfigūruojamas. Dabar galime jį perskaityti naudodami Vartotojo API:

Pranešimų skaitymas iš temos

sudo kafka-konsolė-vartotojas.sh - zookeeper localhost: 2181 --
temos testavimas - nuo pat pradžių

Štai ką mes grąžiname naudodami šią komandą:

Komanda perskaityti pranešimą iš „Kafka“ temos


Mes galėsime pamatyti pranešimus ar eilutes, kurias parašėme naudodami „Producer“ API, kaip parodyta žemiau:

Jei parašysime dar vieną naują pranešimą naudodami „Producer“ API, jis taip pat bus nedelsiant parodytas vartotojo pusėje:

Skelbti ir vartoti tuo pačiu metu

Išvada

Šioje pamokoje mes apžvelgėme, kaip pradedame naudoti „Apache Kafka“, kuris yra puikus „Message Broker“ ir gali veikti kaip specialus duomenų atkūrimo padalinys.

„OpenTTD“ ir „Simutrans“
Sukurti savo transporto modeliavimą gali būti smagu, atpalaiduojanti ir be galo viliojanti. Štai kodėl jūs turite įsitikinti, kad išbandėte kuo daugia...
„OpenTTD“ pamoka
„OpenTTD“ yra vienas iš populiariausių verslo modeliavimo žaidimų. Šiame žaidime turite sukurti nuostabų transporto verslą. Tačiau pradėsite nuo mažda...
„SuperTuxKart“, skirta „Linux“
„SuperTuxKart“ yra puikus pavadinimas, sukurtas nemokamai suteikti „Mario Kart“ patirtį jūsų „Linux“ sistemoje. Tai gana sudėtinga ir smagu žaisti, yr...