Apache Kafka
Augsta līmeņa definīcijai uzrādīsim īsu Apache Kafka definīciju:
Apache Kafka ir izplatīts, izturīgs pret kļūdām, horizontāli mērogojams, saistību žurnāls.
Tie bija daži augsta līmeņa vārdi par Apache Kafka. Ļaujiet mums šeit detalizēti izprast jēdzienus.
- Izplatīts: Kafka tajā esošos datus sadala vairākos serveros, un katrs no šiem serveriem spēj apstrādāt klientu pieprasījumus par tajā esošo datu daļu
- Izturīgs pret kļūdām: Kafkai nav neviena neveiksmes punkta. SPoF sistēmā, piemēram, MySQL datu bāzē, ja serveris, kurā mitinās datu bāze, pazeminās, programma tiek pieskrūvēta. Sistēmā, kurai nav SPoF un sastāv no vairāku mezglu punktiem, pat ja lielākā daļa sistēmas iet uz leju, galalietotājam tā joprojām ir vienāda.
- Horizontāli mērogojams: Šāda veida scailing attiecas uz vairāku mašīnu pievienošanu esošajam klasterim. Tas nozīmē, ka Apache Kafka spēj pieņemt vairāk mezglu savā klasterī un nenodrošina dīkstāvi nepieciešamajiem sistēmas jauninājumiem. Apskatiet zemāk redzamo attēlu, lai saprastu, kāda veida jēdzieni ir saistīti:
- Izpildīt žurnālu: Saistību žurnāls ir datu struktūra tāpat kā sasaistītais saraksts. Tas pievieno jebkādus ziņojumus, kas tai pienāk, un vienmēr uztur to kārtību. Datus nevar izdzēst no šī žurnāla, kamēr šiem datiem nav noteikts laiks.
Vertikāla un horizontāla skandēšana
Apache Kafka tēma ir gluži kā rinda, kurā tiek glabāti ziņojumi. Šie ziņojumi tiek glabāti konfigurējamu laiku, un ziņa netiek izdzēsta līdz šī laika sasniegšanai, pat ja to ir patērējuši visi zināmie patērētāji.
Kafka ir mērogojams, jo patērētāji faktiski glabā, ka viņu ielādētais ziņojums pēdējais saglabājas kā “nobīdes” vērtība. Apskatīsim skaitli, lai to labāk saprastu:
Tēmas nodalījums un patērētāja kompensācija Apache Kafka
Darba sākšana ar Apache Kafka
Lai sāktu lietot Apache Kafka, tā jāinstalē mašīnā. Lai to izdarītu, lasiet Ubuntu sadaļā Apache Kafka instalēšana.
Pārliecinieties, ka jums ir aktīva Kafka instalācija, ja vēlaties izmēģināt piemērus, kurus mēs piedāvājam vēlāk stundā.
Kā tas darbojas?
Ar Kafku Producents publicē lietojumprogrammas ziņas kas nonāk pie Kafka Mezgls nevis tieši Patērētājam. No šī Kafka mezgla ziņojumus patērē Patērētājs 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ā. Mēģināsim to pasniegt:
Tēmas starpsienas
Arī šoreiz Kafka Broker nereģistrē, 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.
Noturība pret disku
Kafka joprojām saglabā ziņojumus, ko tā saņēmusi no producentiem, diskā un neglabā tos atmiņā. Var rasties jautājums, kā tas padara lietas iespējamas un ātras? Tam bija vairāki iemesli, kas padara to par optimālu ziņojumu ierakstu pārvaldības veidu:
- Kafka ievēro ziņojumu ierakstu grupēšanas protokolu. Ražotāji veido ziņojumus, kas tiek saglabāti diskā lielos gabalos, un patērētāji patērē šos ziņojumu ierakstus arī lielos lineāros gabalos.
- Diska rakstīšanas iemesls ir lineārs, un tas padara lasīšanu ātru, jo diska lasīšanas laiks ir ļoti samazināts.
- Lineārās diska darbības optimizē Operētājsistēmas kā arī izmantojot aizrakstīšana un lasīt uz priekšu.
- Mūsdienu OS izmanto arī jēdzienu Pagaching tas nozīmē, ka viņi kešatmiņā glabā dažus diska datus Bezmaksas pieejamā RAM.
- Tā kā Kafka saglabā datus vienotos standarta datos visā plūsmā no ražotāja līdz patērētājam, tas izmanto nulles kopiju optimizācija process.
Datu izplatīšana un replikācija
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.
Kaut arī nodalījums tiek atkārtots vairākos mezglos, joprojām ir nodalījuma vadītājs mezgls, caur kuru lietojumprogrammas lasa un raksta datus par tēmu, un vadītājs atkārto datus par citiem mezgliem, kurus sauc par sekotāji no šī nodalījuma.
Ja lietojumprogrammai ziņu ieraksta dati ir ļoti svarīgi, garantiju par ziņojumu ieraksta drošību vienā no mezgliem var palielināt, palielinot replikācijas koeficients klastera.
Kas ir Zookeeper?
Zookeeper ir ļoti izturīgs pret kļūdām, izplatīts atslēgas vērtību veikals. Apache Kafka ir ļoti atkarīgs no Zookeeper, lai glabātu kopu mehāniku, piemēram, sirdsdarbību, izplatītu atjauninājumus / konfigurācijas utt.).
Tas ļauj Kafka brokeriem parakstīties uz sevi un zināt, kad ir notikušas kādas izmaiņas attiecībā uz nodalījuma vadītāju un mezglu sadalījumu.
Ražotāju un patērētāju lietojumprogrammas tieši sazinās ar Zookeeper lietojumprogramma, lai uzzinātu, kurš mezgls ir tēmas nodalījuma vadītājs, lai viņi varētu lasīt un rakstīt no nodalījuma vadītāja.
Straumēšana
Straumēšanas procesors ir galvenā Kafka klastera sastāvdaļa, kas nepārtraukti paņem ziņu ierakstu datu plūsmu no ievades tēmām, apstrādā šos datus un izveido datu plūsmu līdz izvades tēmām, kas var būt jebkas, sākot no miskastes līdz datu bāzei.
Ir pilnīgi iespējams veikt vienkāršu apstrādi tieši, izmantojot ražotāja / patērētāja API, lai gan sarežģītai apstrādei, piemēram, plūsmu apvienošanai, Kafka nodrošina integrētu Streams API bibliotēku, taču, lūdzu, ņemiet vērā, ka šī API ir paredzēta lietošanai mūsu pašu koda bāzē un tā nav ” t palaist pie brokera. Tas darbojas līdzīgi patērētāja API un palīdz mums paplašināt straumes apstrādes darbu vairākās lietojumprogrammās.
Kad lietot Apache Kafka?
Kā mēs pētījām iepriekšējās sadaļās, Apache Kafka var izmantot, lai risinātu lielu skaitu ziņojumu ierakstu, kas var piederēt gandrīz bezgalīgam skaitam tēmu mūsu sistēmās.
Apache Kafka ir ideāls kandidāts, lietojot pakalpojumu, kas mums ļauj mūsu lietojumprogrammās sekot notikumu virzītai arhitektūrai. Tas ir saistīts ar datu noturības, kļūdu izturīgas un ļoti izplatītas arhitektūras iespējām, kur kritiskās lietojumprogrammas var paļauties uz tās veiktspēju.
Mērogojamā un izplatītā Kafka arhitektūra ļoti atvieglo integrāciju ar mikropakalpojumiem un ļauj lietojumprogrammai atvienoties ar lielu biznesa loģiku.
Jaunas tēmas izveide
Mēs varam izveidot testa tēmu testēšana Apache Kafka serverī ar šādu komandu:
Tēmas izveide
sudo kafka-tēmas.sh --create - zookeeper localhost: 2181 - replikācijas koeficients 1--1. nodalījums - testa pārbaude
Lūk, ko mēs atgūsim ar šo komandu:
Izveidojiet jaunu Kafka tēmu
Tiks izveidota testēšanas tēma, kuru mēs varēsim apstiprināt ar minēto komandu:
Kafka tēmas izveides apstiprinājums
Ziņu rakstīšana par tēmu
Kā mēs pētījām iepriekš, viens no API, kas atrodas Apache Kafka, ir Ražotāja API. Mēs izmantosim šo API, lai izveidotu jaunu ziņojumu un publicētu tikko izveidotajā tēmā:
Rakstīt ziņojumu tēmai
sudo kafka-konsole-producents.sh - brokeru saraksta localhost: 9092 - topiku testēšanaApskatīsim šīs komandas izvadi:
Publicēt ziņojumu Kafka tēmai
Kad mēs nospiedīsim taustiņu, mēs redzēsim jaunu bultiņas (>) zīmi, kas nozīmē, ka mēs tagad varam ievietot datus:
Ziņas rakstīšana
Vienkārši ierakstiet kaut ko un nospiediet, lai sāktu jaunu rindu. Es ierakstīju 3 tekstu rindas:
Tēmas ziņojumu lasīšana
Tagad, kad mēs esam publicējuši ziņojumu mūsu izveidotajā Kafka tēmā, šis ziņojums būs tur kādu laiku konfigurējams. Tagad mēs to varam izlasīt, izmantojot Patērētāja API:
Tēmas ziņojumu lasīšana
sudo kafka-konsole-patērētājs.sh - zookeeper localhost: 2181 --tēmas pārbaude - no sākuma
Lūk, ko mēs atgūsim ar šo komandu:
Komanda izlasīt ziņojumu no Kafka tēmas
Mēs varēsim redzēt ziņojumus vai rindas, kuras esam uzrakstījuši, izmantojot Producer API, kā parādīts zemāk:
Ja mēs rakstīsim vēl vienu jaunu ziņojumu, izmantojot Producer API, tas uzreiz tiks parādīts arī patērētāja pusē:
Publicēt un Patērēt vienlaicīgi
Secinājums
Šajā nodarbībā mēs apskatījām, kā mēs sākam lietot Apache Kafka, kas ir lielisks ziņojumu starpnieks un var darboties arī kā īpaša datu noturības vienība.