Apache Kafka

Apache Kafka Partisjonering

Apache Kafka Partisjonering
I denne leksjonen vil vi se hva vi mener med partisjonering i Apache Kafka og hvordan påvirker det ytelsen til en Kafka-klynge. Konseptet med partisjonering er sentralt i Kafka-klyngen, da det bruker partisjonering som en primær måte å skalere og øke ytelsen på.

Vær oppmerksom på at dette ikke er en innføringstime. Les hva som er Apache Kafka og hvordan fungerer det før du fortsetter med denne leksjonen for å få en dypere innsikt.

Emner i Kafka

Et emne i Kafka er noe der det sendes en melding. Forbrukerapplikasjonene som er interessert i dette emnet trekker meldingen inne i emnet og kan gjøre hva som helst med disse dataene. Inntil et bestemt tidspunkt kan et hvilket som helst antall forbrukerapplikasjoner trekke denne meldingen et antall ganger.

Tenk på et emne som LinuxHints Ubuntu-bloggside. Leksjonene blir satt i all evighet, og et hvilket som helst antall entusiastiske lesere kan komme og lese disse leksjonene et antall ganger eller gå til neste leksjon som de ønsker. Disse leserne kan også være interessert i andre emner fra LinuxHint.

Emne Partisjonering

Kafka er designet for å håndtere tunge applikasjoner og køer et stort antall meldinger som holdes inne i et emne. For å sikre høy feiltoleranse er hvert emne delt inn i flere emnepartisjoner, og hver emnepartisjon administreres på en egen node. Hvis en av nodene går ned, kan en annen node fungere som emneleder og kan servere emner til de interesserte forbrukerne. Slik skrives de samme dataene til flere emnepartisjoner:

Emnepartisjoner


Nå viser bildet ovenfor hvordan samme data replikeres over flere partisjoner. La oss visualisere hvordan forskjellige partisjoner kan fungere som leder på forskjellige noder / partisjoner:

Kafka Megler Partisjonering

Når en klient skriver noe til et emne på en posisjon som Partisjon i megler 0 er leder for, blir disse dataene replikert på tvers av meglerne / nodene, slik at meldingen forblir trygg:

Replikering på tvers av meglerpartisjoner

Flere partisjoner, høyere gjennomstrømning

Kafka benytter seg av Parallelisme å gi svært høy gjennomstrømning til produsent- og forbrukerapplikasjoner. Egentlig, på samme måte, opprettholder den også sin status som et høyt feiltolerant system. La oss forstå hvor høy gjennomstrømning oppnås med parallellisme.

Når en produsentapplikasjon skriver noen meldinger til en partisjon i megler 0, åpner Kafka flere tråder parallelt slik at meldingen kan replikeres på tvers av alle de valgte meglerne samtidig. På forbrukersiden bruker et forbrukerapplikasjon meldinger fra en enkelt partisjon gjennom en tråd. Jo mer antall partisjoner, jo flere forbrukertråder kan åpnes slik at alle kan fungere parallelt også. Dette betyr at jo mer antall partisjoner i en klynge, jo mer parallellitet kan utnyttes, og skape et veldig høyt gjennomstrømningssystem.

Flere partisjoner trenger flere filhåndterere

Bare så du studerte over hvordan vi kan øke ytelsen til Kafka-systemet ved bare å øke antall partisjoner. Men vi må være forsiktige med hvilken grense vi går mot.

Hver emnepartisjon i Kafka blir kartlagt til en katalog i filsystemet til servermegleren der den kjører. Innenfor loggkatalogen vil det være to filer: en for indeksen og en annen for de faktiske dataene per logg segment. For tiden åpner hver megler i Kafka et filhåndtak for både indeksen og datafilen til hvert loggsegment. Dette betyr at hvis du har 10.000 partisjoner på en enkelt megler, vil dette resultere i at 20 000 filhåndterere kjører parallelt. Selv om dette bare handler om konfigurasjonen av megleren. Hvis systemet Megleren er distribuert på har høy konfigurasjon, vil dette neppe være noe problem.

Risiko med høyt antall partisjoner

Som vi så på bildene ovenfor, bruker Kafka replikasjonsteknikk innen klyngen for å replikere en melding fra en leder til Replica-partisjonene som ligger i andre meglere. Både produsent- og forbrukerapplikasjoner leser og skriver til en partisjon som for tiden er leder for den partisjonen. Når en megler mislykkes, blir lederen på den megleren utilgjengelig. Metadataene om hvem som er leder oppbevares i Zookeeper. Basert på disse metadataene vil Kafka automatisk tildele ledelsen til partisjonen til en annen partisjon.

Når en megler blir stengt med en ren kommando, vil kontrollernoden til Kafka-klyngen flytte lederne til nedleggelsesmegleren serielt i.e. en om gangen. hvis vi vurderer å flytte en enkelt leder tar 5 millisekunder, vil ledernes utilgjengelighet ikke forstyrre forbrukerne, da utilgjengeligheten er i en veldig kort periode. Men hvis vi vurderer når Megleren blir drept på en uren måte og denne Megleren inneholder 5000 partisjoner og ut av disse, var 2000 partisjonslederne, og å tildele nye ledere for alle disse partisjonene vil ta 10 sekunder, noe som er veldig høyt når det gjelder høyt etterspurte applikasjoner.

Konklusjon

Hvis vi betrakter som en tenker på høyt nivå, fører flere partisjoner i en Kafka-klynge til en høyere gjennomstrømning av systemet. Når man holder denne effektiviteten i bakhodet, må man også vurdere konfigurasjonen til Kafka-klyngen vi trenger for å opprettholde, minnet vi trenger å tilordne den klyngen og hvordan vi kan håndtere tilgjengeligheten og ventetiden hvis noe går galt.

Les mer Ubuntu-baserte innlegg her og mye mer om Apache kafka også.

Mus Topp 5 ergonomiske datamuseprodukter for Linux
Topp 5 ergonomiske datamuseprodukter for Linux
Gir langvarig bruk av datamaskiner smerter i håndleddet eller fingrene? Lider du av stive ledd og må hele tiden riste på deg hendene? Føler du en bren...
Mus Hvordan endre mus og berøringsplateinnstillinger ved hjelp av Xinput i Linux
Hvordan endre mus og berøringsplateinnstillinger ved hjelp av Xinput i Linux
De fleste Linux-distribusjoner leveres med "libinput" -biblioteket som standard for å håndtere inngangshendelser på et system. Den kan behandle inngan...
Mus Kartlegg museknappene på en annen måte for annen programvare med X-Mouse Button Control
Kartlegg museknappene på en annen måte for annen programvare med X-Mouse Button Control
Kanskje du trenger et verktøy som kan gjøre at musens kontroll endres med hvert program du bruker. Hvis dette er tilfelle, kan du prøve et program som...