Inleiding tot Kafka Consumer Group
De Kafka-consumentengroep is in feite een aantal Kafka-consumenten die gegevens parallel van een Kafka-onderwerp kunnen lezen. Een Kafka Consumer Group heeft de volgende eigenschappen:
- Alle consumenten in een groep hebben dezelfde groep. Id.
- Elke partitie in het onderwerp wordt gelezen door slechts één consument.
- Het maximale aantal consumenten is gelijk aan het aantal partities in het onderwerp. Als er meer consumenten zijn dan partities, blijven sommige consumenten inactief.
- Een consument kan lezen van meer dan één partitie.
Het belang van Kafka Consumer Group
Voor een retailorganisatie zal een groot aantal producenten enorme hoeveelheden gegevens genereren. Om een grote hoeveelheid gegevens te kunnen lezen, hebben we meerdere consumenten nodig die parallel lopen. Het is relatief eenvoudiger aan de kant van de producent, waar elke producent onafhankelijk van de andere gegevens genereert. Aan de kant van de consument is de kans echter groot dat elk bericht meer dan eens wordt gelezen als er meer dan één consument leest over hetzelfde onderwerp. Kafka lost dit probleem op met Consumer Group. In elk geval mag slechts één consument gegevens van een partitie lezen.
Partities van Kafka Consumer Group
Laten we aannemen dat we een Kafka-onderwerp hebben en dat er 4 partities in zitten. Dan kunnen we de volgende scenario's hebben:
1. Aantal consumenten = Aantal partities
In dit geval leest elke consument gegevens van elke partitie en dit is het ideale geval.
2. Aantal consumenten> Aantal partities
In dit geval blijft één consument inactief en leidt dit tot een slecht gebruik van de bron.
3. Aantal consumenten <Aantal partities
In dit geval zal een van de consumenten gegevens van meer dan één partitie lezen.
4. Aantal consumentengroepen> 1
In dit geval wordt het onderwerp onderschreven door meer dan één consumentengroep die zich op twee verschillende toepassingen richt. De twee applicaties kunnen onafhankelijk van elkaar worden uitgevoerd.
Voordelen van Kafka Consumer Group
Consumer Group voegt de volgende voordelen toe:
- Schaalbaarheid: een aantal consumenten dat gegevens parallel leest, verhoogt beslist de gegevensconsumptiesnelheid en maakt het systeem in staat een grote hoeveelheid gegevens te lezen.
- Fouttolerantie: stel dat we slechts één consument hadden (voor het lezen van niet zo veel gegevens), wat zou er gebeuren als de consument om welke reden dan ook faalt? De hele pijpleiding zal breken.
- Load Balancing: Kafka deelt de partities eerlijk met elke consument, waardoor het gegevensverbruik soepel en efficiënt verloopt.
- Herbalanceren: als een nieuwe consument wordt toegevoegd of een bestaande stopt, brengt Kafka de belasting van de beschikbare consumenten opnieuw in evenwicht.
Hoe Kafka de twee modellen overbrugt?
Laten we eerst de twee berichtmodellen bespreken.
1. Berichtenwachtrijen
In dit model wordt een stroom berichten verzonden van één producent naar slechts één consument. Elk bericht wordt dus eenmaal alleen-lezen en zodra een consument een bericht ophaalt, wordt het bericht uit de wachtrij gewist. Een typisch voorbeeld kan het uitgeven van een salaris zijn, waarbij elk salaris slechts eenmaal moet worden uitgegeven. Dit model zorgt er ook niet voor dat berichten op volgorde worden afgeleverd. De schaalbaarheid van het verwerken van berichten is beperkt tot een enkel domein.
2. Publiceer-Abonneer Berichten
In dit model kunnen de berichten die door een producent zijn gepubliceerd, door meer dan één consument worden geabonneerd. De producent en de consument zijn grotendeels ontkoppeld. Dit model zorgt ervoor dat elke consument berichten over een onderwerp in de exacte volgorde ontvangt die door de producent is gegenereerd. Een typisch voorbeeld kan een schotel-tv zijn die verschillende kanalen publiceert, zoals muziek, film, sport, enz., En de consumenten kunnen zich op meer dan één kanaal abonneren. Omdat er meerdere abonnees op een onderwerp zijn, is het schalen van de verwerking van streams een uitdaging.
Kafka is zo populair omdat het gebaseerd is op het publish-subscribe-model, maar het heeft de voordelen van een wachtrijsysteem voor berichten. Zoals eerder besproken, zorgt Kafka ervoor dat als we een groep Consumenten hebben, elk bericht in een onderwerp een keer alleen-lezen is door een Consument (wat vergelijkbaar is met een Message Queue-systeem). De extra voordelen zijn dat de berichten worden bewaard door de makelaars (waardoor ze enige tijd fouttolerant worden) en als we meer dan één consumentengroep hebben, kunnen ze berichten van hetzelfde onderwerp lezen, maar ze anders verwerken.
Gebruik Gevolgen van de zaak
Laten we aannemen dat we een eenvoudig cloudplatform hebben waar we de volgende bewerkingen aan gebruikers toestaan:
- Sla bestanden op in de cloud.
- Bekijk hun bestanden in de cloud.
- Download hun bestanden vanuit de cloud.
In het begin hadden we een heel klein gebruikersbestand. We wilden verschillende statistieken afleiden (op uurbasis) zoals actieve gebruikers, aantal uploadverzoeken, aantal downloadverzoeken enzovoort. Om aan de vereisten te voldoen, hebben we een Kafka-cluster opgezet die de logs (gegenereerd door onze applicatie) in een onderwerp produceert en er is een applicatie die het onderwerp consumeert (met behulp van een consument) en vervolgens verwerkt om de vereiste statistieken te genereren en uiteindelijk weer te geven die op een webpagina.
Naarmate mensen meer van onze diensten begonnen te houden, begonnen meer mensen er gebruik van te maken, waardoor veel logs per uur werden gegenereerd. We hebben geconstateerd dat de applicatie die het onderwerp gebruikt extreem traag werd omdat we slechts één consument gebruikten. Om het probleem op te lossen, hebben we enkele consumenten aan de groep toegevoegd en hebben we een aanzienlijke verbetering van de prestaties gevonden.
We kwamen nog een vereiste tegen, waarbij we de logboeken naar een HDFS-cluster moesten schrijven en dit proces onafhankelijk van de vorige toepassing moest worden uitgevoerd (dit is omdat we met verdere toename van gegevens van plan waren de eerste toepassing buiten gebruik te stellen en alle statistieken af te leiden in de HDFS-omgeving). Om aan deze eis te voldoen, hebben we een andere applicatie ontwikkeld die zich op het onderwerp heeft geabonneerd met behulp van een andere consumentengroep en de gegevens in het HDFS-cluster heeft geschreven.
Aanbevolen artikelen
Dit is een gids voor Kafka Consumer Group. Hier bespreken we het belang van de Kafka-consumentengroep en hoe Kafka twee modellen overbrugt, samen met de implicatie van de use case. U kunt ook de volgende artikelen bekijken voor meer informatie-
- Kafka-toepassingen
- Hoe Kafka installeren?
- Vragen tijdens solliciteren bij Kafka
- HDFS-architectuur
- Verschillende soorten Kafka-tools