Šioje pamokoje pamatysime, kas yra „Apache Kafka“ ir kaip ji veikia kartu su keletu dažniausiai naudojamų atvejų. „Apache Kafka“ iš pradžių buvo sukurta „LinkedIn“ 2010 m., O 2012 m. Ji tapo aukščiausio lygio „Apache“ projektu. Jį sudaro trys pagrindiniai komponentai:
- Leidėjas-prenumeratorius: Šis komponentas yra atsakingas už efektyvų duomenų valdymą ir teikimą visuose „Kafka“ mazguose ir vartotojų programose, kurios skalauja daug (pvz., Pažodžiui).
- „Connect API“: „Connect“ API yra naudingiausia „Kafka“ funkcija ir leidžia „Kafka“ integruoti su daugeliu išorinių duomenų šaltinių ir duomenų kriauklių.
- Kafkos upeliai: Naudodamiesi „Kafka Stream“ galime apsvarstyti galimybę gaunamus duomenis apdoroti masteliu beveik realiu laiku.
Ateinančiuose skyriuose išnagrinėsime daug daugiau „Kafka“ koncepcijų. Judėkime į priekį.
Apache Kafka koncepcijos
Prieš gilindamiesi, turime išsamiai aptarti kai kurias Apache Kafka sąvokas. Štai terminai, kuriuos turėtume žinoti labai trumpai:
-
- Prodiuseris: Tai programa, siunčianti pranešimą „Kafka“
- Vartotojas: Tai programa, naudojanti „Kafka“ duomenis
- Pranešimas: Duomenys, kuriuos „Producer“ programa per „Kafka“ siunčia vartotojų programai
- Ryšys: „Kafka“ užmezga TCP ryšį tarp „Kafka“ klasterio ir programų
- Tema: Tema yra kategorija, kuriai siunčiami duomenys žymimi ir pateikiami suinteresuotoms vartotojų programoms
- Temos skaidymas: Kadangi viena tema gali gauti daug duomenų vienu ypu, kad „Kafka“ būtų horizontaliai keičiama, kiekviena tema yra padalinta į skaidinius ir kiekvienas skaidinys gali gyventi bet kurioje mazgų mazgų mašinoje. Pabandykime tai pateikti:
Temos pertvaros
- Replikos: Kaip mes anksčiau ištyrėme, kad tema yra padalinta į skaidinius, kiekvienas pranešimų įrašas yra pakartojamas keliuose klasterio mazguose, kad būtų išlaikyta kiekvieno įrašo tvarka ir duomenys tuo atveju, jei vienas iš mazgų miršta.
- Vartotojų grupės: Keli vartotojai, kurie domisi ta pačia tema, gali būti laikomi grupėje, kuri vadinama vartotojų grupe
- Įskaitymas: „Kafka“ yra keičiamo dydžio, nes vartotojai iš tikrųjų saugo paskutinį jų gautą pranešimą kaip „kompensuojamąją“ vertę. Tai reiškia, kad ta pačia tema vartotojo A poslinkio vertė gali būti 5, o tai reiškia, kad jam reikia apdoroti šeštąjį paketą, o vartotojui B - kompensacijos vertė gali būti 7, o tai reiškia, kad jam reikia apdoroti aštuntąjį paketą. Tai visiškai pašalino priklausomybę nuo pačios temos saugant šiuos metaduomenis, susijusius su kiekvienu vartotoju.
- Mazgas: Mazgas yra vieno serverio mašina „Apache Kafka“ grupėje.
- Klasteris: Klasteris yra mazgų grupė, t.e., serverių grupė.
Temos, temos pertvarų ir kompensavimo koncepciją taip pat galima aiškiai parodyti iliustraciniu paveikslu:
Temos skaidymas ir vartotojų kompensavimas „Apache Kafka“
„Apache Kafka“ kaip „Publish-subscribe“ susirašinėjimo sistema
Su „Kafka“ „Producer“ programos skelbia pranešimus, kurie gaunami į „Kafka“ mazgą, o ne tiesiogiai vartotojui. Iš šio „Kafka“ mazgo pranešimus vartoja „Consumer“ 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.
Vėlgi, „Kafka Broker“ neveda įrašų, kuris vartotojas sunaudojo kiek duomenų paketų. Tai yra vartotojų atsakomybė sekti suvartotus duomenis. Dėl to, kad „Kafka“ neseka kiekvienos vartotojų programos patvirtinimų ir pranešimų, ji gali valdyti daug daugiau vartotojų, turėdama nereikšmingą poveikį pralaidumui. Gamyboje daugelis programų netgi laikosi paketinių vartotojų modelio, o tai reiškia, kad vartotojas reguliariai vartoja visus pranešimus eilėje.
Montavimas
Norėdami pradėti naudoti „Apache Kafka“, jis turi būti įdiegtas kompiuteryje. Norėdami tai padaryti, skaitykite „Apache Kafka“ diegimas „Ubuntu“.
Naudojimo atvejis: svetainės naudojimo stebėjimas
„Kafka“ yra puikus įrankis, kurį reikia naudoti, kai turime stebėti veiklą svetainėje. Stebėjimo duomenys apima ir neapsiriboja puslapių peržiūromis, paieškomis, įkėlimais ar kitais naudotojų atliktais veiksmais. Kai vartotojas yra svetainėje, jis gali atlikti bet kokį skaičių veiksmų naršydamas svetainėje.
Pvz., Kai naujas vartotojas užsiregistruoja svetainėje, gali būti stebima veikla, kokia tvarka naujas vartotojas tiria svetainės funkcijas, jei vartotojas nustato savo profilį pagal poreikį arba nori tiesiogiai pereiti prie tinklo funkcijų. Interneto svetainė. Kai tik vartotojas spusteli mygtuką, to mygtuko metaduomenys kaupiami duomenų pakete ir siunčiami į „Kafka“ grupę, iš kurios programos analizės tarnyba gali rinkti šiuos duomenis ir pateikti naudingų įžvalgų apie susijusius duomenis. Jei norėtume užduotis suskirstyti į žingsnius, procesas atrodys taip:
- Vartotojas užsiregistruoja svetainėje ir patenka į informacijos suvestinę. Vartotojas bando iš karto pasiekti funkciją, naudodamas mygtuką.
- Žiniatinklio programa sukuria pranešimą su šiais metaduomenimis temos skaidinyje „paspaudimas“.
- Pranešimas pridedamas prie įsipareigojimų žurnalo, o kompensavimas didinamas
- Dabar vartotojas gali ištraukti „Kafka Broker“ pranešimą ir realiuoju laiku parodyti svetainės naudojimą bei parodyti buvusius duomenis, jei jis atstato savo kompensaciją į galimą praeities vertę
Naudojimo atvejis: pranešimų eilė
„Apache Kafka“ yra puikus įrankis, kuris gali pakeisti pranešimų tarpininkų įrankius, pvz., „RabbitMQ“. Asinchroniniai pranešimai padeda atsieti programas ir sukuria labai keičiamą sistemą.
Kaip ir mikropaslaugų koncepcija, užuot sukūrę vieną didelę programą, galime suskirstyti programą į kelias dalis ir kiekviena dalis turi labai konkrečią atsakomybę. Tokiu būdu skirtingos dalys gali būti parašytos ir visiškai nepriklausomomis programavimo kalbomis! „Kafka“ turi įmontuotą skaidymo, replikavimo ir atsparumo gedimams sistemą, todėl ji yra gera kaip didelio masto pranešimų tarpininkų sistema.
Pastaruoju metu „Kafka“ taip pat vertinamas kaip labai geras žurnalų rinkimo sprendimas, kuris gali valdyti žurnalų failų rinkimo serverio brokerį ir pateikti šiuos failus į centrinę sistemą. Su „Kafka“ galima sugeneruoti bet kokį įvykį, apie kurį norėtumėte žinoti apie bet kurią kitą jūsų programos dalį.
„Kafka“ naudojimas „LinkedIn“
Įdomu pažymėti, kad „Apache Kafka“ anksčiau buvo vertinama ir naudojama kaip būdas, kuriuo duomenų vamzdynai gali būti nuoseklūs ir per kuriuos duomenys buvo įkelti į „Hadoop“. „Kafka“ dirbo puikiai, kai buvo keli duomenų šaltiniai ir paskirties vietos, o kiekvienam šaltinio ir paskirties deriniui nebuvo įmanoma pateikti atskiro proceso. „LinkedIn“ „Kafka“ architektas Jay Krepsas tinklaraščio įraše gerai apibūdina šią pažįstamą problemą:
Mano pačių dalyvavimas šiame procese prasidėjo maždaug 2008 m., Kai mes pristatėme savo pagrindinių vertybių parduotuvę. Kitas mano projektas buvo pabandyti pradėti veikti „Hadoop“ sąranką ir perkelti ten kai kuriuos mūsų rekomendacijų procesus. Turėdami mažai patirties šioje srityje, mes natūraliai paskyrėme kelias savaites duomenims gauti ir išgauti, o likusį laiką - išgalvotų prognozavimo algoritmų įgyvendinimui. Taigi prasidėjo ilgas šūkis.
Apache Kafka ir Flume
Jei persikelsite palyginti šiuos du pagal jų funkcijas, rasite daug bendrų bruožų. Štai keletas jų:
- „Kafka“ rekomenduojama naudoti, kai naudojate kelias programas, naudojančias duomenis, o ne „Flume“, kuris yra specialiai sukurtas integruoti su „Hadoop“ ir gali būti naudojamas tik duomenims įkelti į HDFS ir HBase. „Flume“ yra optimizuotas HDFS operacijoms atlikti.
- „Kafka“ yra trūkumas, kai reikia koduoti gamintojus ir vartotojų programas, o „Flume“ jis turi daugybę įmontuotų šaltinių ir kriauklių. Tai reiškia, kad jei esami poreikiai atitinka „Flume“ funkcijas, rekomenduojama taupyti laiką naudoti patį „Flume“.
- „Flume“ gali naudoti duomenis skrydžio metu, naudodamasis perėmėjais. Tai gali būti svarbu duomenų maskavimui ir filtravimui, o „Kafka“ reikalinga išorinė srauto apdorojimo sistema.
- „Kafka“ gali naudoti „Flume“ kaip vartotoją, kai mums reikia įvesti duomenis į HDFS ir HBase. Tai reiškia, kad „Kafka“ ir „Flume“ labai gerai integruojasi.
- „Kakfa“ ir „Flume“ gali garantuoti, kad duomenys nebus prarasti, jei bus teisinga konfigūracija, kurią taip pat lengva pasiekti. Vis dėlto norėčiau atkreipti dėmesį į tai, kad „Flume“ nekopijuoja įvykių, o tai reiškia, kad jei nepavyks vienas iš „Flume“ mazgų, mes prarasime prieigą prie įvykio, kol bus atkurtas diskas
Išvada
Šioje pamokoje apžvelgėme daugybę sąvokų apie Apache Kafka. Skaitykite daugiau „Kafka“ pranešimų čia.