Šajā nodarbībā mēs redzēsim, kas ir Apache Kafka un kā tas darbojas kopā ar dažiem visizplatītākajiem lietošanas gadījumiem. Apache Kafka sākotnēji tika izstrādāts LinkedIn 2010. gadā un pārcēlās par augstākā līmeņa Apache projektu 2012. gadā. Tam ir trīs galvenās sastāvdaļas:
- Izdevējs-abonents: Šis komponents ir atbildīgs par efektīvu datu pārvaldību un piegādi visos Kafka mezglos un patērētāju lietojumprogrammās, kurās ir daudz mērogu (piemēram, burtiski).
- Connect API: Connect API ir visnoderīgākā Kafka funkcija un ļauj Kafka integrēt ar daudziem ārējiem datu avotiem un datu izlietnēm.
- Kafka straumes: Izmantojot Kafka straumes, mēs varam apsvērt ienākošo datu apstrādi mērogā gandrīz reāllaikā.
Nākamajās sadaļās mēs izpētīsim daudz vairāk Kafka koncepciju. Ejam uz priekšu.
Apache Kafka koncepcijas
Pirms iedziļināties, mums rūpīgi jāaplūko daži Apache Kafka jēdzieni. Šeit ir termini, kas mums būtu jāzina ļoti īsi:
-
- Producents: Šī ir programma, kas nosūta ziņojumu Kafka
- Patērētājs: Šī ir programma, kas patērē datus no Kafka
- Ziņojums: Dati, kurus Producer lietojumprogramma nosūta patērētāja lietojumprogrammai, izmantojot Kafka
- Savienojums: Kafka izveido TCP savienojumu starp Kafka kopu un lietojumprogrammām
- Temats: Tēma ir kategorija, kurai nosūtītie dati tiek marķēti un piegādāti ieinteresētajām patērētāju lietojumprogrammām
- Tēmas nodalījums: Tā kā viena tēma vienā piegājienā var iegūt daudz datu, lai Kafka būtu mērogojama horizontāli, katra tēma tiek sadalīta nodalījumos un katrs nodalījums var dzīvot jebkurā klastera mezglu mašīnā. Mēģināsim to pasniegt:
Tēmas starpsienas
- Replikas: Tā kā mēs iepriekš pētījām, ka tēma ir sadalīta nodalījumos, katrs ziņojumu ieraksts tiek atkārtots vairākos klastera mezglos, lai saglabātu katra ieraksta kārtību un datus, ja kāds no mezgliem nomirst.
- Patērētāju grupas: Vairākus patērētājus, kurus interesē viena un tā pati tēma, var turēt grupā, ko sauc par Patērētāju grupu
- Kompensācija: Kafka ir mērogojams, jo patērētāji faktiski glabā to, kuru ziņojumu viņi pēdējā laikā ielādēja kā “nobīdes” vērtību. Tas nozīmē, ka tai pašai tēmai patērētāja A nobīdes vērtība varētu būt 5, kas nozīmē, ka tai nākamajam jāapstrādā sestā pakete, bet patērētājam B nobīdes vērtība varētu būt 7, kas nozīmē, ka nākamajam jāapstrādā astotā pakete. Tas pilnībā novērsa atkarību no pašas tēmas, glabājot šos metadatus, kas saistīti ar katru patērētāju.
- Mezgls: Mezgls ir viena servera mašīna Apache Kafka klasterī.
- Kopa: Kopa ir mezglu grupa, t.i.e., serveru grupa.
Tēmas, tēmas starpsienu un nobīdes koncepciju var arī skaidri pateikt ar ilustratīvu attēlu:
Tēmas nodalījums un patērētāja kompensācija Apache Kafka
Apache Kafka kā Publish-abonēt ziņojumapmaiņas sistēmu
Izmantojot Kafka, Producer lietojumprogrammas publicē ziņojumus, kas nonāk Kafka mezglā, nevis tieši patērētājam. No šī Kafka mezgla ziņojumus patērē patērētāja lietojumprogrammas.
Kafka ražotājs un patērētājs
Tā kā viena tēma vienā piegājienā var iegūt daudz datu, lai Kafka būtu horizontāli mērogojama, katra tēma ir sadalīta starpsienas un katrs nodalījums var dzīvot jebkurā klastera mezglu mašīnā.
Arī šoreiz Kafka brokeris neved uzskaiti par to, kurš patērētājs ir patērējis cik datu paketes. Tas ir patērētāju atbildība sekot līdzi patērētajiem datiem. Sakarā ar to, ka Kafka neizseko katras patērētāja lietojumprogrammas apstiprinājumus un ziņojumus, tā var pārvaldīt daudz vairāk patērētāju ar nenozīmīgu ietekmi uz caurlaidi. Ražošanā daudzas lietojumprogrammas ievēro pat pakešu patērētāju modeli, kas nozīmē, ka patērētājs visus ziņojumus rindā patērē regulāri.
Uzstādīšana
Lai sāktu lietot Apache Kafka, tā jāinstalē mašīnā. Lai to izdarītu, lasiet Ubuntu sadaļā Apache Kafka instalēšana.
Izmantošanas gadījums: vietnes lietošanas izsekošana
Kafka ir lielisks rīks, ko izmantot, ja mums ir nepieciešams izsekot aktivitātei vietnē. Izsekošanas datos ietilpst, bet ne tikai, lapas skatījumi, meklējumi, augšupielādes vai citas darbības, kuras lietotāji var veikt. Kad lietotājs atrodas vietnē, viņš var veikt jebkuru darbību skaitu, kad viņš / viņa sērfo vietnē.
Piemēram, kad jauns lietotājs reģistrējas vietnē, darbību var izsekot kādā secībā jauns lietotājs izskata vietnes funkcijas, ja lietotājs nosaka savu profilu pēc nepieciešamības vai dod priekšroku tieši pāriet uz vietnes funkcijām. vietne. Ikreiz, kad lietotājs noklikšķina uz pogas, šīs pogas metadati tiek apkopoti datu paketē un nosūtīti uz Kafka kopu, no kuras lietojumprogrammas analīzes pakalpojums var apkopot šos datus un sniegt noderīgu ieskatu par saistītajiem datiem. Ja mēs vēlamies sadalīt uzdevumus pa soļiem, process izskatās šādi:
- Lietotājs reģistrējas vietnē un ieiet informācijas panelī. Lietotājs mēģina piekļūt funkcijai uzreiz, mijiedarbojoties ar pogu.
- Tīmekļa lietojumprogramma izveido ziņojumu ar šiem metadatiem tēmas sadaļai “klikšķis”.
- Ziņojums tiek pievienots saistību žurnālam, un kompensācija tiek palielināta
- Patērētājs tagad var izvilkt Kafka Broker ziņojumu un reāllaikā parādīt vietnes lietojumu un parādīt pagātnes datus, ja tas atiestata iespējamo pagātnes vērtību
Izmantošanas gadījums: ziņojumu rinda
Apache Kafka ir lielisks rīks, kas var darboties kā aizstājējs ziņojumu starpnieku rīkiem, piemēram, RabbitMQ. Asinhronā ziņojumapmaiņa palīdz atdalīt lietojumprogrammas un izveido ļoti pielāgojamu sistēmu.
Tāpat kā mikropakalpojumu jēdziens, tā vietā, lai izveidotu vienu lielu lietojumprogrammu, mēs varam sadalīt lietojumprogrammu vairākās daļās, un katrai daļai ir ļoti specifiska atbildība. Tādā veidā dažādās daļas var rakstīt arī pilnīgi neatkarīgās programmēšanas valodās! Kafka ir iebūvēta sadalīšanas, replikācijas un kļūdu tolerances sistēma, kas padara to par labu kā liela mēroga ziņojumu starpnieka sistēmu.
Nesen Kafka tiek uzskatīts arī par ļoti labu žurnālu vākšanas risinājumu, kas var pārvaldīt žurnālfailu kolekcijas servera starpnieku un piegādāt šos failus centrālajai sistēmai. Izmantojot Kafka, ir iespējams ģenerēt jebkuru notikumu, par kuru vēlaties zināt kādu citu jūsu lietojumprogrammas daļu.
Kafka lietošana vietnē LinkedIn
Interesanti atzīmēt, ka Apache Kafka agrāk tika uzskatīts un izmantots kā veids, kā padarīt datu cauruļvadus konsekventus un caur kuriem dati tika uzņemti Hadoop. Kafka strādāja izcili, kad bija vairāki datu avoti un galamērķi, un atsevišķa cauruļvada procesa nodrošināšana katrai avota un mērķa kombinācijai nebija iespējama. LinkedIn Kafka arhitekts Džejs Krepss labi pazīst šo problēmu emuāra ziņā:
Mana iesaistīšanās šajā jautājumā sākās apmēram 2008. gadā, kad mēs piegādājām savu galveno vērtību veikalu. Mans nākamais projekts bija mēģināt iedarbināt Hadoop iestatīšanu un pārvietot tur dažus mūsu ieteikumu procesus. Ņemot vērā to, ka šajā jomā ir maz pieredzes, mēs, protams, dažām nedēļām paredzējām datus datu iegūšanai un izņemšanai, bet pārējo laiku iedomātu prognozēšanas algoritmu ieviešanai. Tātad sākās ilgs lode.
Apache Kafka un Flume
Ja jūs pārvietojaties, lai salīdzinātu šos divus, pamatojoties uz to funkcijām, jūs atradīsit daudz kopīgu iezīmju. Šeit ir daži no tiem:
- Kafka ir ieteicams izmantot, ja jums ir vairākas lietojumprogrammas, kas patērē datus, nevis Flume, kas ir īpaši paredzēts integrēšanai ar Hadoop un ko var izmantot tikai datu uzņemšanai HDFS un HBase. Flume ir optimizēts HDFS darbībām.
- Izmantojot Kafka, ir negatīvs faktors, ka jākodē ražotāji un patērētāju lietojumprogrammas, savukārt Flume ir daudz iebūvētu avotu un izlietņu. Tas nozīmē, ka, ja esošās vajadzības atbilst Flume funkcijām, ieteicams ietaupīt laiku, izmantojot pašu Flume.
- Flume var izmantot datus lidojuma laikā ar pārtvērēju palīdzību. Tas var būt svarīgi datu maskēšanai un filtrēšanai, turpretim Kafka nepieciešama ārēja plūsmas apstrādes sistēma.
- Kafka var izmantot Flume kā patērētāju, kad mums jāievada dati HDFS un HBase. Tas nozīmē, ka Kafka un Flume ļoti labi integrējas.
- Kakfa un Flume var garantēt nulles datu zudumu ar pareizu konfigurāciju, ko arī ir viegli sasniegt. Tomēr, lai norādītu, Flume neatkārto notikumus, kas nozīmē, ka, ja kāds no Flume mezgliem neizdodas, mēs zaudēsim piekļuvi notikumiem, līdz disks tiks atkopts
Secinājums
Šajā nodarbībā mēs aplūkojām daudzus jēdzienus par Apache Kafka. Lasiet vairāk ziņas, kuru pamatā ir Kafka.