U ovoj ćemo lekciji vidjeti što je Apache Kafka i kako to funkcionira zajedno s nekim najčešćim slučajevima korištenja. Apache Kafka izvorno je razvijen u LinkedInu 2010. godine, a 2012. postao je Apache projekt najviše razine. Sadrži tri glavne komponente:
- Izdavač-pretplatnik: Ova je komponenta odgovorna za učinkovito upravljanje i isporuku podataka kroz Kafka čvorove i potrošačke aplikacije koje se puno skaliraju (poput doslovno).
- Connect API: API Connect najkorisnija je značajka za Kafku i omogućuje Kafka integraciju s mnogim vanjskim izvorima podataka i slivnicima.
- Potoci Kafka: Koristeći Kafka Streams, možemo razmotriti mogućnost obrade dolaznih podataka u opsegu u gotovo stvarnom vremenu.
U sljedećim ćemo odjeljcima proučavati puno više Kafkinih koncepata. Idemo naprijed.
Koncepti Apache Kafke
Prije nego što dublje zakopamo, moramo biti temeljiti u vezi s nekim konceptima u Apache Kafki. Evo pojmova koje bismo trebali znati vrlo kratko:
-
- Proizvođač: Ovo je aplikacija koja šalje poruku Kafki
- Potrošač: Ovo je aplikacija koja troši podatke iz Kafke
- Poruka: Podaci koje aplikacija Proizvođač putem aplikacije Kafka šalje potrošačkoj aplikaciji
- Veza: Kafka uspostavlja TCP vezu između Kafka klastera i aplikacija
- Tema: Tema je kategorija kojoj se poslani podaci označavaju i dostavljaju zainteresiranim potrošačkim aplikacijama
- Podjela teme: Kako jedna tema može dobiti puno podataka odjednom, da bi Kafka bio vodoravno skalabilan, svaka je tema podijeljena na particije i svaka particija može živjeti na bilo kojem čvornom stroju klastera. Pokušajmo to predstaviti:
Tematske particije
- Replike: Kao što smo gore proučavali da je tema podijeljena na particije, svaki se zapis poruke replicira na više čvorova klastera kako bi se održao redoslijed i podaci svakog zapisa u slučaju da jedan od čvorova umre.
- Potrošačke skupine: Više potrošača koje zanima ista tema može se držati u grupi koja se naziva grupa potrošača
- Pomak: Kafka je prilagodljiv, jer potrošači zapravo pohranjuju onu poruku koju su zadnji dohvatili kao "offset" vrijednost. To znači da za istu temu odstupanje potrošača A može imati vrijednost 5, što znači da treba sljedeći obraditi šesti paket, a za potrošača B vrijednost odstupanja može biti 7, što znači da treba sljedeći obraditi osmi paket. Time je u potpunosti uklonjena ovisnost o samoj temi za pohranu ovih meta-podataka koji se odnose na svakog potrošača.
- Čvor: Čvor je jedan poslužiteljski stroj u klasteru Apache Kafka.
- Klastera: Klaster je skupina čvorova i.e., grupa poslužitelja.
Koncept teme, particija teme i pomaka također se može jasno objasniti ilustrativnom slikom:
Dio teme i potrošački pomak u Apache Kafki
Apache Kafka kao sustav za razmjenu poruka Publish-subscribe
Uz Kafku, producent aplikacije objavljuju poruke koje stižu na Kafka čvor, a ne izravno potrošaču. Iz ovog Kafka čvora poruke konzumiraju potrošačke aplikacije.
Kafka proizvođač i potrošač
Kako jedna tema može dobiti puno podataka odjednom, kako bi Kafka bila vodoravno skalabilna, svaka je tema podijeljena na pregrade i svaka particija može živjeti na bilo kojem čvornom stroju klastera.
Opet, Kafka Broker ne vodi evidenciju o tome koji je potrošač potrošio koliko paketa podataka. To je ono odgovornost potrošača za praćenje podataka koje je potrošila. Iz razloga što Kafka ne prati potvrde i poruke svake potrošačke aplikacije, može upravljati s mnogo više potrošača s zanemarivim utjecajem na protok. U proizvodnji mnoge aplikacije čak slijede obrazac serijskih potrošača, što znači da potrošač u redovitim intervalima troši sve poruke u redu čekanja.
Montaža
Da biste počeli koristiti Apache Kafka, mora biti instaliran na stroju. Da biste to učinili, pročitajte Instalacija Apache Kafke na Ubuntuu.
Slučaj upotrebe: Praćenje upotrebe web mjesta
Kafka je izvrstan alat koji se koristi kada trebamo pratiti aktivnosti na web mjestu. Podaci o praćenju uključuju, bez ograničenja, prikaze stranica, pretraživanja, prijenose ili druge radnje koje korisnici mogu poduzeti. Kada je korisnik na web mjestu, korisnik može poduzeti bilo koji broj radnji kada surfa web stranicom.
Na primjer, kada se novi korisnik registrira na web mjestu, aktivnost se može pratiti onim redoslijedom kojim novi korisnik istražuje značajke web mjesta, ako korisnik postavi svoj profil po potrebi ili želi izravno skočiti na značajke web stranice web stranica. Kad god korisnik klikne gumb, metapodaci za taj gumb prikupljaju se u podatkovnom paketu i šalju klasteru Kafka odakle služba analitike za aplikaciju može prikupiti te podatke i dati korisne uvide u povezane podatke. Ako zadatke želimo podijeliti u korake, evo kako će izgledati postupak:
- Korisnik se registrira na web mjestu i ulazi na nadzornu ploču. Korisnik pokušava odmah pristupiti značajci interakcijom s gumbom.
- Web aplikacija izrađuje poruku s ovim metapodacima na particiji teme "klik".
- Poruka se dodaje zapisniku urezivanja i povećava se pomak
- Potrošač sada može povući poruku Kafka Brokera i prikazati upotrebu web stranica u stvarnom vremenu i prikazati prošle podatke ako resetira svoj pomak na moguću prošlu vrijednost
Slučaj upotrebe: Red čekanja za poruke
Apache Kafka izvrstan je alat koji može djelovati kao zamjena za alate za posredovanje poruka poput RabbitMQ. Asinkrono slanje poruka pomaže u razdvajanju aplikacija i stvara visoko skalabilan sustav.
Baš kao i koncept mikro usluga, umjesto da gradimo jednu veliku aplikaciju, možemo i mi podijeliti aplikaciju na više dijelova i svaki dio ima vrlo specifičnu odgovornost. Na taj se način različiti dijelovi mogu pisati i na potpuno neovisnim programskim jezicima! Kafka ima ugrađeni sustav za particioniranje, replikaciju i otpornost na greške što ga čini dobrim kao sustav za brokeriranje poruka.
U posljednje vrijeme Kafka se također vidi kao vrlo dobro rješenje za prikupljanje dnevnika koje može upravljati posrednikom poslužitelja za prikupljanje datoteka dnevnika i pružiti te datoteke središnjem sustavu. Pomoću Kafke moguće je generirati bilo koji događaj za koji želite da bilo koji drugi dio vaše aplikacije zna.
Korištenje Kafke na LinkedInu
Zanimljivo je primijetiti da je Apache Kafka ranije viđen i korišten kao način na koji cjevovodi podataka mogu biti usklađeni i putem kojih se podaci unose u Hadoop. Kafka je izvrsno radio kada je bilo prisutno više izvora podataka i odredišta, a pružanje odvojenog postupka cjevovoda za svaku kombinaciju izvora i odredišta nije bilo moguće. LinkedIn-ov arhitekt Kafka, Jay Kreps dobro opisuje ovaj poznati problem u blogu:
Moje vlastito sudjelovanje u ovome započelo je oko 2008. nakon što smo poslali našu trgovinu ključeva i vrijednosti. Moj sljedeći projekt bio je pokušati pokrenuti ispravnu postavku Hadoopa i tamo premjestiti neke od naših preporuka. Imajući malo iskustva u ovom području, prirodno smo proračunali nekoliko tjedana za ulazak i izlaz podataka, a ostatak vremena za implementaciju otmjenih algoritama predviđanja. Tako je započeo dugi slogan.
Apache Kafka i Flume
Ako se odlučite usporediti ovo dvoje na temelju njihovih funkcija, pronaći ćete puno zajedničkih značajki. Ovo su neki od njih:
- Preporučuje se korištenje Kafke kada imate više aplikacija koje troše podatke umjesto Flume-a, koji je posebno izrađen za integriranje s Hadoop-om i može se koristiti samo za unos podataka u HDFS i HBase. Flume je optimiziran za HDFS operacije.
- S Kafkom je loša strana morati kodirati proizvođače i potrošačke aplikacije, dok u Flumeu ima mnogo ugrađenih izvora i sudopera. To znači da ako se postojeće potrebe podudaraju sa značajkama Flumea, preporučujemo vam upotrebu samog Flumea kako biste uštedjeli vrijeme.
- Flume može trošiti podatke u letu uz pomoć presretača. To može biti važno za maskiranje i filtriranje podataka, dok Kafka treba vanjski sustav za obradu toka.
- Moguće je da Kafka koristi Flume kao potrošača kada trebamo unijeti podatke u HDFS i HBase. To znači da se Kafka i Flume stvarno dobro integriraju.
- Kakfa i Flume mogu jamčiti nulti gubitak podataka s ispravnom konfiguracijom, što je također lako postići. Ipak, da naglasimo, Flume ne replicira događaje, što znači da ćemo izgubiti pristup događajima dok se ne oporavi jedan od čvorova Flume
Zaključak
U ovoj smo lekciji pogledali mnoge koncepte o Apacheu Kafki. Ovdje pročitajte više postova temeljem Kafke.