Zephyrnet-logotyp

Kafka Basics: Introduktion till Kafka Consumer Group & hur kan den användas?

Datum:

Vad är Apache Kafka?

Image Credit: Unsplash

Apache Kafka är ett distribuerat datalager designat för realtidsdatainmatning och bearbetning. Strömmande data är data som genereras kontinuerligt av hundratals datakällor, som vanligtvis skickar in dataposter samtidigt. En streamingplattform måste kunna hantera det ständiga inflödet av data och bearbeta det på ett sekventiellt och gradvis sätt.

Användare kan använda Kafka för tre olika syften:

Strömmar av skivor publiceras och prenumereras på.
Strömmar av poster bör lagras i samma ordning som de skapades.
Realtidsbearbetning av dataströmmar
Kafka används oftast för att skapa realtidsströmningsdatapipelines och applikationer som anpassar sig till dataströmmar. Den blandar kommunikation, lagring och strömbehandling för att tillhandahålla både historisk och realtidsdatalagring och analys.

Konsumentgrupp

A Kafka konsument grupp är en grupp människor som arbetar tillsammans för att konsumera information om ett visst ämne. Gruppens konsumenter är indelade i partitioner för vart och ett av teman. När nya medlemmar går med i gruppen och gamla lämnar, tilldelas partitionerna om så att varje medlem får en proportionell andel av partitionerna. Att återbalansera gruppen heter det.

Den grundläggande skillnaden mellan den gamla "högnivå"-konsumenten och den nya konsumenten är att den förra förlitade sig på ZooKeeper för gruppledning, medan den senare förlitar sig på ett Kafka-byggt gruppprotokoll. En av mäklarna är utsedd till gruppens koordinator i detta protokoll, och han eller hon ansvarar för att hantera gruppens medlemmar samt deras uppdelningsuppdrag.

Varje grupps samordnare väljs bland ledarna för det interna offsetämnet __konsumentoffsets, som lagrar engagerade offsets. I huvudsak hashas gruppens ID till en av ämnets partitioner, och ledaren för den partitionen väljs som koordinator. Som ett resultat av detta fördelas administrationen av konsumentgrupper ganska jämnt över alla mäklare i klustret, vilket gör att antalet grupper kan växa i takt med att antalet mäklare växer.

Kafka konsumentkonfiguration

Image Credit: unsplash

Några av de viktigaste konfigurationsinställningarna beskrivs nedan, tillsammans med hur de påverkar konsumenternas beteende.

Standardinställningar

Den enda obligatoriska inställningen är bootstrap.servers, men du bör också ställa in ett client.id så att du enkelt kan länka förfrågningar till klientinstansen som gjorde dem. För att upprätthålla kundkvoter kommer alla konsumenter i en viss grupp vanligtvis att ha samma kund-ID.

Skapa en grupp

Om du använder API:et för enkel tilldelning och inte behöver behålla offset i Kafka, bör du alltid konfigurera group.id. Värdet session.timeout.ms kan åsidosättas för att justera sessionens timeout.
Värdet session.timeout.ms kan åsidosättas för att justera sessionens timeout. I C/C++- och Java-klienter är standardtidsgränsen 10 sekunder, men du kan förlänga den för att undvika överdriven ombalansering på grund av till exempel dålig nätverksanslutning eller långa GC-pauser.

Den största nackdelen med att anta en längre sessionstid är att det tar längre tid för samordnaren att identifiera när en konsumentinstans har misslyckats, vilket innebär att det tar längre tid för en annan konsument i gruppen att ta dess partitioner. Normala avstängningar utlöses å andra sidan av att konsumenten skickar en uttrycklig begäran till samordnaren om att lämna gruppen, vilket orsakar en omedelbar ombalansering.

max.poll.interval.ms är en annan egenskap som kan ha en inverkan på överdriven ombalansering. Den här parametern ställer in den maximala tiden mellan avfrågningsmetodanrop innan konsumentprocessen bedöms ha misslyckats. Om ditt program kräver mer tid för att bearbeta meddelanden än standardvärdet på 300 sekunder, kan du säkert öka den.

Hantering av offset

Återställningsprincipen för offset och om auto-commit är aktiverat är de två viktigaste alternativen som påverkar offsethanteringen. För det första, om enable.auto.commit är satt till true (vilket är standard), kommer konsumenten att begå offset vid det intervall som definieras av auto.commit.interval.ms. Timeout är inställt på 5 sekunder som standard.
Auto-commit offset är aktiverat som standard på konsumenten. Du får "minst en gång" leverans genom att använda auto-commit: Även om Kafka säkerställer att inga meddelanden kommer att gå förlorade, är det möjligt att dubbletter kommer att inträffa. Konfigurationsegenskapen auto.commit.interval.ms fungerar som ett cron med en period vald av användaren. Om konsumenten kraschar, kommer alla partitioner som innehas av den kraschade konsumenten att få sina positioner återställda till den senast genomförda offset efter en omstart eller ombalansering. Den senast inloggade positionen kan vara lika gammal som själva auto-commit-intervallet om detta händer. Alla meddelanden som tagits emot sedan föregående commit måste läsas på nytt.

Kafka Consumer Group Command Tool

Image Credit: Unsplash

Statusen för konsumentgrupper kan ses med hjälp av ett Kafka-administrationsverktyg.

Grupper i alfabetisk ordning

Funktionen kafka-konsumentgrupper som ingår i Kafka-distributionen kan användas för att få en lista över de aktiva grupperna i klustret. Detta kan ta lång tid på ett stort kluster eftersom det samlar in listan genom att inspektera varje mäklare.
bin/kafka-consumer-groups –bootstrap-server host:9092 –lista

Gruppbeskrivning

Funktionen kafka-konsumentgrupper kan också användas för att samla in data om en specifik grupp. Till exempel, kör följande kommando för att se de aktuella tilldelningarna för foo-gruppen:
bin/kafka-consumer-groups –bootstrap-server host:9092 –describe –group foo

Slutsats

I beskrivningen ovan kan vi se om Kafka konsumentgrupp och hur den används under hela processen.

Källa: Platon Data Intelligence: Platodata.io

plats_img

Senaste intelligens

plats_img