Zephyrnet-logo

Kafka Basics: Inleiding tot Kafka Consumer Group en hoe kan het worden gebruikt?

Datum:

Wat is Apache Kafka?

Image credit: Unsplash

Apache Kafka is een gedistribueerde gegevensopslag die is ontworpen voor realtime gegevensinvoer en -verwerking. Streaminggegevens zijn gegevens die continu worden gegenereerd door honderden gegevensbronnen, die doorgaans gegevensrecords tegelijkertijd verzenden. Een streamingplatform moet de constante toestroom van data aankunnen en op een sequentiële en geleidelijke manier verwerken.

Gebruikers kunnen Kafka voor drie verschillende doeleinden gebruiken:

Er worden recordsstromen gepubliceerd en er wordt op geabonneerd.
Gegevensstromen moeten worden opgeslagen in dezelfde volgorde als waarin ze zijn gemaakt.
Realtime verwerking van gegevensstromen
Kafka wordt het meest gebruikt om real-time streaminggegevenspijplijnen en -toepassingen te maken die zich aanpassen aan gegevensstromen. Het combineert communicatie, opslag en streamverwerking om zowel historische als realtime gegevensopslag en -analyse te bieden.

Consumentengroep

A Kafka-consument group is een groep mensen die samenwerken om informatie over een bepaald onderwerp te consumeren. De consumenten van de groep zijn voor elk van de thema's opgedeeld in partities. Als nieuwe leden toetreden tot de groep en oude vertrekken, worden de partities opnieuw toegewezen, zodat elk lid een evenredig deel van de partities krijgt. De groep opnieuw in evenwicht brengen, heet dat.

Het fundamentele verschil tussen de oude consument op hoog niveau en de nieuwe consument is dat de eerste op ZooKeeper vertrouwde voor groepsbeheer, terwijl de laatste vertrouwt op een door Kafka ontwikkeld groepsprotocol. Een van de makelaars wordt in dit protocol aangewezen als de coördinator van de groep en hij of zij is verantwoordelijk voor het beheer van de leden van de groep en voor hun partitietoewijzingen.

De coördinator van elke groep wordt gekozen uit de leiders van het onderwerp interne compensaties __consumentencompensaties, waarin vastgelegde compensaties worden opgeslagen. In wezen wordt de groeps-ID gehasht naar een van de partities van het onderwerp, en de leider van die partitie wordt gekozen als de coördinator. Als gevolg hiervan wordt de administratie van consumentengroepen redelijk gelijkmatig verdeeld over alle makelaars in het cluster, waardoor het aantal groepen kan groeien naarmate het aantal makelaars groeit.

Kafka-consumentenconfiguratie

Image credit: unsplash

Hieronder worden enkele van de belangrijkste configuratie-instellingen beschreven, samen met hun invloed op het consumentengedrag.

Standaardinstellingen

De enige verplichte instelling is bootstrap.servers, maar u moet ook een client.id instellen, zodat u verzoeken eenvoudig kunt koppelen aan de clientinstantie die ze heeft gemaakt. Om klantquota af te dwingen, hebben alle consumenten in een bepaalde groep meestal dezelfde klant-ID.

Een groep instellen

Als u de eenvoudige toewijzings-API gebruikt en geen offsets in Kafka hoeft te bewaren, moet u altijd group.id configureren. De waarde session.timeout.ms kan worden overschreven om de time-out van de sessie aan te passen.
De waarde session.timeout.ms kan worden overschreven om de time-out van de sessie aan te passen. In de C/C++- en Java-clients is de standaardtime-out 10 seconden, maar u kunt deze verlengen om overmatige herbalancering te voorkomen, bijvoorbeeld vanwege een slechte netwerkverbinding of lange GC-pauzes.

Het grootste nadeel van het aannemen van een langere sessietime-out is dat het langer duurt voor de coördinator om te identificeren wanneer een consumenteninstantie is uitgevallen, wat betekent dat het langer duurt voordat een andere consument in de groep zijn partities overneemt. Normale uitschakelingen daarentegen worden geactiveerd doordat de consument een expliciet verzoek naar de coördinator stuurt om de groep te verlaten, wat een onmiddellijke herbalancering veroorzaakt.

max.poll.interval.ms is een andere eigenschap die van invloed kan zijn op overmatige herbalancering. Deze parameter stelt de maximale hoeveelheid tijd in tussen het aanroepen van de poll-methode voordat het consumentenproces als mislukt wordt beoordeeld. Als uw programma meer tijd nodig heeft om berichten te verwerken dan de standaardwaarde van 300 seconden, kunt u deze veilig verlengen.

Beheer van de compensatie

Het offset-resetbeleid en of automatisch vastleggen is ingeschakeld, zijn de twee belangrijkste opties die van invloed zijn op het offsetbeheer. Ten eerste, als enable.auto.commit is ingesteld op true (wat de standaard is), zal de consument offsets vastleggen met het interval dat is gedefinieerd door auto.commit.interval.ms. De time-out is standaard ingesteld op 5 seconden.
Offsets voor automatisch vastleggen zijn standaard ingeschakeld op de consument. U krijgt "minstens één keer" bezorging door gebruik te maken van auto-commit: hoewel Kafka ervoor zorgt dat er geen berichten verloren gaan, is het mogelijk dat er duplicaten optreden. De configuratie-eigenschap auto.commit.interval.ms fungeert als een cron met een door de gebruiker gekozen periode. Als de consument crasht, worden alle partities die door de gecrashte consument worden vastgehouden, teruggezet naar de laatste vastgelegde offset na een herstart of herbalancering. Als dit gebeurt, kan de laatst vastgelegde positie zo oud zijn als het auto-commit-interval zelf. Alle berichten die sinds de vorige commit zijn ontvangen, moeten opnieuw worden gelezen.

Kafka Consumer Group Commando-tool

Image credit: Unsplash

De status van consumentengroepen kan worden bekeken met behulp van een Kafka-beheerdershulpprogramma.

Groepen in alfabetische volgorde

De functie kafka-consumentengroepen die bij de Kafka-distributie wordt geleverd, kan worden gebruikt om een ​​lijst op te halen van de actieve groepen in het cluster. Dit kan lang duren bij een groot cluster omdat het de lijst verzamelt door elke makelaar te inspecteren.
bin/kafka-consumentengroepen –bootstrap-server host:9092 –lijst

groepsomschrijving

De functie kafka-consumentengroepen kan ook worden gebruikt om gegevens over een specifieke groep te verzamelen. Voer bijvoorbeeld de volgende opdracht uit om de huidige toewijzingen voor de foo-groep te zien:
bin/kafka-consumentengroepen –bootstrap-server host:9092 –beschrijven –groep foo

Conclusie

In de bovenstaande beschrijving kunnen we zien over de Kafka-consumentengroep en hoe deze gedurende het hele proces wordt gebruikt.

Bron: Plato Data Intelligence: PlatoData.io

spot_img

Laatste intelligentie

spot_img

Chat met ons

Hallo daar! Hoe kan ik u helpen?