V tej lekciji bomo videli, kaj je Apache Kafka in kako deluje, skupaj z nekaterimi najpogostejšimi primeri uporabe. Apache Kafka je bil prvotno razvit v LinkedInu leta 2010, leta 2012 pa je postal vrhunski projekt Apache. Ima tri glavne komponente:
- Založnik-naročnik: Ta komponenta je odgovorna za učinkovito upravljanje in dostavo podatkov v vozliščih Kafka in potrošniških aplikacijah, ki se veliko spreminjajo (na primer dobesedno).
- Connect API: API Connect je najkoristnejša funkcija za Kafko in omogoča integracijo Kafke s številnimi zunanjimi viri podatkov in pomnilniki.
- Potoki Kafka: Z uporabo tokov Kafka lahko razmislimo o obdelavi dohodnih podatkov v obsegu v skoraj realnem času.
V naslednjih poglavjih bomo preučili veliko več konceptov Kafke. Gremo naprej.
Apache Kafka Concepts
Preden se poglobimo, se moramo temeljito seznaniti z nekaterimi koncepti v Apache Kafki. Tu so izrazi, ki bi jih morali vedeti na kratko:
-
- Producent: To je aplikacija, ki pošlje sporočilo Kafki
- Potrošnik: To je aplikacija, ki porablja podatke iz Kafke
- Sporočilo: Podatki, ki jih aplikacija Producer pošlje potrošniški aplikaciji prek Kafke
- Povezava: Kafka vzpostavi TCP povezavo med gručo Kafka in aplikacijami
- Tema: Tema je kategorija, ki ji se poslani podatki označijo in dostavijo zainteresiranim potrošniškim aplikacijam
- Razdelitev teme: Ker lahko ena tema naenkrat dobi veliko podatkov, da ostane Kafka vodoravno prilagodljiva, je vsaka tema razdeljena na particije in vsaka particija lahko živi na katerem koli vozlišču v gruči. Poskusimo to predstaviti:
Tematske particije
- Replike: Kot smo zgoraj preučevali, da je tema razdeljena na particije, se vsak zapis sporočila podvoji na več vozliščih gruče, da se ohrani vrstni red in podatki vsakega zapisa, če eno od vozlišč umre.
- Skupine potrošnikov: Več potrošnikov, ki jih zanima ista tema, je mogoče obdržati v skupini, ki se imenuje skupina potrošnikov
- Odmik: Kafka je prilagodljiv, saj potrošniki tisti, ki dejansko shranijo sporočilo, ki so ga nazadnje prejeli kot vrednost "odmika". To pomeni, da ima lahko za isto temo odmik porabnika A vrednost 5, kar pomeni, da mora naslednji obdelati šesti paket, za odjemalca B pa je lahko odmik 7, kar pomeni, da mora naslednjič obdelati osmi paket. S tem je bila popolnoma odstranjena odvisnost od same teme za shranjevanje teh metapodatkov, povezanih z vsakim potrošnikom.
- Vozlišče: Vozlišče je en strežniški stroj v gruči Apache Kafka.
- Grozd: Grozd je skupina vozlišč i.e., skupina strežnikov.
Koncept teme, razdelitve tem in odmika je mogoče pojasniti tudi z ilustrativno sliko:
Delitev teme in odmik potrošnikov v Apache Kafka
Apache Kafka kot sistem za pošiljanje sporočil Objavi-naroči
S programom Kafka aplikacije Producer objavljajo sporočila, ki prispejo na vozlišče Kafka in ne neposredno na potrošnika. Od tega vozlišča Kafka sporočila porabijo potrošniške aplikacije.
Kafka proizvajalec in potrošnik
Ker lahko ena tema naenkrat dobi veliko podatkov, da bo Kafka vodoravno prilagodljiv, je vsaka tema razdeljena na predelne stene in vsaka particija lahko živi na katerem koli vozlišču v gruči.
Ponovno Kafka Broker ne vodi evidence, kateri potrošnik je porabil koliko paketov podatkov. Je odgovornost potrošnikov za evidentiranje podatkov, ki jih je porabila. Ker Kafka ne beleži potrditev in sporočil vsake potrošniške aplikacije, lahko upravlja veliko več potrošnikov z zanemarljivim vplivom na pretočnost. V proizvodnji številne aplikacije celo sledijo vzorcu serijskih potrošnikov, kar pomeni, da potrošnik redno porablja vsa sporočila v čakalni vrsti.
Namestitev
Če želite začeti uporabljati Apache Kafka, ga morate namestiti na stroj. Če želite to narediti, preberite Namesti Apache Kafka v Ubuntu.
Primer uporabe: sledenje uporabi spletnega mesta
Kafka je odlično orodje, ki ga lahko uporabimo, kadar moramo slediti dejavnostim na spletnem mestu. Podatki o sledenju vključujejo in niso omejeni na oglede strani, iskanja, nalaganja ali druga dejanja, ki jih lahko izvajajo uporabniki. Ko je uporabnik na spletnem mestu, lahko uporabnik med brskanjem po spletnem mestu izvede poljubno število ukrepov.
Na primer, ko se novi uporabnik registrira na spletnem mestu, se lahko dejavnosti spremlja, v kakšnem vrstnem redu novi uporabnik raziskuje funkcije spletnega mesta, če uporabnik nastavi svoj profil po potrebi ali raje neposredno preskoči na funkcije spletnega mesta. Spletna stran. Vsakič, ko uporabnik klikne gumb, se metapodatki za ta gumb zberejo v podatkovnem paketu in pošljejo v gručo Kafka, od koder lahko analitična služba za aplikacijo zbere te podatke in da koristne vpoglede v povezane podatke. Če želimo naloge razdeliti na korake, je postopek takšen:
- Uporabnik se registrira na spletnem mestu in vstopi na nadzorno ploščo. Uporabnik poskuša takoj dostopati do funkcije z interakcijo z gumbom.
- Spletna aplikacija ustvari sporočilo s temi metapodatki za particijo teme »klik«.
- Sporočilo se doda dnevniku odobritev in odmik se poveča
- Potrošnik lahko zdaj povleče sporočilo Kafka Broker in v realnem času prikaže uporabo spletnega mesta ter prikaže pretekle podatke, če ponastavi svoj odmik na morebitno preteklo vrednost
Primer uporabe: čakalna vrsta sporočil
Apache Kafka je izvrstno orodje, ki lahko nadomesti orodja za posrednike sporočil, kot je RabbitMQ. Asinhrono sporočanje pomaga pri ločevanju aplikacij in ustvarja zelo razširljiv sistem.
Tako kot koncept mikro storitev lahko namesto izdelave ene velike aplikacije tudi aplikacijo razdelimo na več delov in vsak del ima zelo specifično odgovornost. Tako lahko različne dele pišemo tudi v popolnoma neodvisnih programskih jezikih! Kafka ima vgrajen sistem za particioniranje, kopiranje in odpornost na napake, zaradi česar je dober kot obsežen sistem za posredovanje sporočil.
V zadnjem času Kafka velja tudi za zelo dobro rešitev za zbiranje dnevnikov, ki lahko upravlja posrednika strežnika za zbiranje dnevniških datotek in te datoteke posreduje centralnemu sistemu. S programom Kafka lahko ustvarite kateri koli dogodek, za katerega želite, da kateri koli del vaše aplikacije ve.
Uporaba Kafke na LinkedInu
Zanimivo je omeniti, da je bil Apache Kafka že prej viden in uporabljen kot način, s katerim je mogoče uskladiti podatkovne kanale in prek katerega se podatki vnašajo v Hadoop. Kafka je deloval odlično, ko je bilo prisotnih več virov podatkov in ciljev, pri čemer ni bilo mogoče zagotoviti ločenega postopka cevovoda za vsako kombinacijo vira in cilja. Arhitekt Kafke v LinkedInu Jay Kreps dobro pozna to težavo v prispevku v blogu:
Moje sodelovanje pri tem se je začelo okrog leta 2008, potem ko smo poslali trgovino s ključnimi vrednostmi. Moj naslednji projekt je bil poskusiti spodbuditi delujočo nastavitev Hadoopa in premakniti nekaj naših priporočilnih postopkov tja. Ker imamo malo izkušenj na tem področju, smo nekaj tednov seveda predvideli za vnašanje in izhajanje podatkov, ves preostali čas pa za implementacijo modnih algoritmov predvidevanja. Tako se je začel dolg slog.
Apache Kafka in Flume
Če se primerjate na podlagi njihovih funkcij, boste našli veliko skupnih lastnosti. Nekaj jih je:
- Priporočljivo je, da Kafko uporabljate, če imate več aplikacij, ki porabljajo podatke, namesto Flume, ki je posebej izdelan za integracijo s Hadoop in se lahko uporablja samo za vnos podatkov v HDFS in HBase. Flume je optimiziran za delovanje HDFS.
- Pri Kafki je slabost kodirati proizvajalce in potrošniške aplikacije, medtem ko ima v Flumeju veliko vgrajenih virov in ponorov. To pomeni, da če se obstoječe potrebe ujemajo s funkcijami Flume, vam priporočamo, da za prihranek časa uporabite sam Flume.
- Flume lahko s pomočjo prestreznikov porabi podatke med letom. To je lahko pomembno za maskiranje in filtriranje podatkov, medtem ko Kafka potrebuje zunanji sistem za obdelavo tokov.
- Kafka lahko uporablja Flume kot potrošnika, kadar moramo podatke zaužiti v HDFS in HBase. To pomeni, da se Kafka in Flume res dobro integrirata.
- Kakfa in Flume lahko zagotovita nič izgube podatkov s pravilno konfiguracijo, ki jo je tudi enostavno doseči. Kljub temu pa poudarimo, da Flume ne podvaja dogodkov, kar pomeni, da če eno od vozlišč Flume ne uspe, bomo izgubili dostop do dogodkov, dokler disk ne bo obnovljen
Zaključek
V tej lekciji smo preučili številne koncepte o Apacheju Kafki. Tukaj preberite več objav na Kafki.