Apache Kafka

Apache Kafka-veiledning

Apache Kafka-veiledning
I denne leksjonen vil vi se hvordan vi kan bruke Apache Kafka og hva er bruken av den. Vi vil grundig se på ulike terminologier som er involvert i det, og begynne å jobbe med dem også.

Apache Kafka

For en definisjon på høyt nivå, la oss presentere en kort definisjon for Apache Kafka:

Apache Kafka er en distribuert, feiltolerant, horisontalt skalerbar, logg.

Det var noen ord på høyt nivå om Apache Kafka. La oss forstå konseptene i detalj her.

Et emne i Apache Kafka er akkurat som en kø der meldinger lagres. Disse meldingene lagres i en konfigurerbar tid og meldingen blir ikke slettet før denne tiden er oppnådd, selv om den har blitt fortært av alle kjente forbrukere.

Kafka er skalerbart, ettersom det er forbrukerne som faktisk lagrer at det budskapet som ble hentet av dem sist som en "offset" -verdi. La oss se på en figur for å forstå dette bedre:

Emnedeling og forbrukerforskyvning i Apache Kafka

Komme i gang med Apache Kafka

For å begynne å bruke Apache Kafka, må den være installert på maskinen. For å gjøre dette, les Installer Apache Kafka på Ubuntu.

Forsikre deg om at du har en aktiv Kafka-installasjon hvis du vil prøve eksempler vi presenterer senere i leksjonen.

Hvordan virker det?

Med Kafka, den Produsent applikasjoner publiserer meldinger som ankommer en Kafka Node og ikke direkte til en forbruker. Fra denne Kafka-node forbrukes meldinger av Forbruker applikasjoner.

Kafka produsent og forbruker


Ettersom et enkelt emne kan få mye data på en gang, for å holde Kafka horisontalt skalerbar, er hvert emne delt inn i skillevegger og hver partisjon kan leve på hvilken som helst node-maskin i en klynge. La oss prøve å presentere det:

Emnepartisjoner


Igjen holder Kafka Broker ikke oversikt over hvilken forbruker som har konsumert hvor mange pakker med data. Det er den forbrukernes ansvar for å holde oversikt over data den har brukt.

Persistence to Disk

Kafka fortsetter meldingsregistrene den får fra produsenter på disken og holder dem ikke i minnet. Et spørsmål som kan oppstå er hvordan dette gjør ting mulig og raskt? Det var flere grunner bak dette som gjør det til en optimal måte å administrere meldingsoppføringene på:

Datadistribusjon og replikering

Som vi studerte ovenfor at et emne er delt inn i partisjoner, replikeres hver meldingspost på flere noder i klyngen for å opprettholde rekkefølgen og dataene til hver post i tilfelle en av noden dør.

Selv om en partisjon er replikert på flere noder, er det fortsatt en partisjon leder node gjennom hvilken applikasjoner leser og skriver data om emnet, og lederen replikerer data på andre noder, som kalles tilhengere av den partisjonen.

Hvis meldingsregistreringsdataene er svært viktige for en applikasjon, kan garantien for at meldingsposten er trygg i en av nodene økes ved å øke replikasjonsfaktor av klyngen.

Hva er Zookeeper?

Zookeeper er en veldig feiltolerant, distribuert butikk med nøkkelverdi. Apache Kafka er sterkt avhengig av Zookeeper for å lagre klyngemekanikk som hjerterytme, distribuere oppdateringer / konfigurasjoner osv.).

Det gjør det mulig for Kafka-meglerne å abonnere på seg selv og vite når noen endringer angående en partisjonsleder og nodedistribusjon har skjedd.

Produsent- og forbrukerapplikasjoner kommuniserer direkte med Zookeeper applikasjon for å vite hvilken node som er partisjonsleder for et emne, slik at de kan utføre leser og skriver fra partisjonslederen.

Streaming

En strømprosessor er en hovedkomponent i en Kafka-klynge som tar en kontinuerlig strøm av meldingsregistreringsdata fra inndataemner, behandler disse dataene og oppretter en datastrøm til utdataemner som kan være hva som helst, fra søppel til en database.

Det er fullt mulig å utføre enkel behandling direkte ved hjelp av produsent / forbruker-API-er, men for kompleks behandling som å kombinere strømmer, tilbyr Kafka et integrert Streams API-bibliotek, men vær oppmerksom på at dette API er ment å brukes i vår egen kodebase, og det gjør det ikke ' ikke kjøre på megler. Det fungerer på samme måte som forbruker-API og hjelper oss med å skalere strømbehandlingsarbeidet over flere applikasjoner.

Når skal du bruke Apache Kafka?

Som vi studerte i avsnittene ovenfor, kan Apache Kafka brukes til å håndtere et stort antall meldingsposter som kan tilhøre et nesten uendelig antall emner i systemene våre.

Apache Kafka er en ideell kandidat når det gjelder å bruke en tjeneste som kan tillate oss å følge hendelsesdrevet arkitektur i våre applikasjoner. Dette er på grunn av dets evner til datapresistens, feiltolerant og høyt distribuert arkitektur der kritiske applikasjoner kan stole på ytelsen.

Den skalerbare og distribuerte arkitekturen til Kafka gjør integrering med mikrotjenester veldig enkelt og gjør det mulig for en applikasjon å koble seg fra seg med mye forretningslogikk.

Opprette et nytt emne

Vi kan lage et testemne testing på Apache Kafka-server med følgende kommando:

Opprette et emne

sudo kafka-emner.sh --create - zookeeper localhost: 2181 - replikasjonsfaktor 1
--partisjoner 1 - emnetesting

Her er hva vi kommer tilbake med denne kommandoen:

Lag nytt Kafka-emne


Et testemne vil bli opprettet som vi kan bekrefte med den nevnte kommandoen:

Kafka Emneopprettelsesbekreftelse

Skrive meldinger på et emne

Som vi studerte tidligere, er en av API-ene som er til stede i Apache Kafka Produsent-API. Vi bruker denne API-en til å lage en ny melding og publisere til emnet vi nettopp opprettet:

Skrive melding til emnet

sudo kafka-konsoll-produsent.sh - meglerliste localhost: 9092 - emnetesting

La oss se utdataene for denne kommandoen:

Publiser melding til Kafka Topic


Når vi trykker på tasten, vil vi se et nytt piltegn (>) som betyr at vi kan gå ut av data nå:

Skrive en melding


Bare skriv inn noe og trykk for å starte en ny linje. Jeg skrev inn 3 tekstlinjer:

Lese meldinger fra emnet

Nå som vi har publisert en melding om Kafka-emnet vi opprettet, vil denne meldingen være der i noen konfigurerbar tid. Vi kan lese den nå ved hjelp av Forbruker-API:

Lese meldinger fra emnet

sudo kafka-konsoll-forbruker.sh --zookeeper lokal vert: 2181 --
emnetesting - fra begynnelsen

Her er hva vi kommer tilbake med denne kommandoen:

Kommando om å lese Melding fra Kafka Topic


Vi vil kunne se meldingene eller linjene vi har skrevet ved hjelp av Producer API som vist nedenfor:

Hvis vi skriver en ny ny melding ved hjelp av Producer API, vil den også vises øyeblikkelig på forbrukersiden:

Publiser og forbruk samtidig

Konklusjon

I denne leksjonen så vi på hvordan vi begynner å bruke Apache Kafka, som er en utmerket meldingsmegler og også kan fungere som en spesiell dataprestensjonsenhet.

Installer nyeste Dolphin Emulator for Gamecube & Wii på Linux
Dolphin Emulator lar deg spille de valgte Gamecube- og Wii-spillene dine på Linux Personal Computers (PC). Som en fritt tilgjengelig og åpen kildekod...
Hvordan bruke GameConqueror Cheat Engine i Linux
Artikkelen dekker en guide om bruk av GameConqueror-juksemotoren i Linux. Mange brukere som spiller spill på Windows bruker ofte "Cheat Engine" -appli...
Beste spillkonsollemulatorer for Linux
Denne artikkelen vil liste opp populære programvare for spillkonsollemulering tilgjengelig for Linux. Emulation er et programvarekompatibilitetslag so...