Apache Kafka

Wat is Apache Kafka en hoe werkt het??

Wat is Apache Kafka en hoe werkt het??

In deze les zullen we zien wat Apache Kafka is en hoe het werkt, samen met de meest voorkomende use-cases.  Apache Kafka is oorspronkelijk ontwikkeld op LinkedIn in 2010 en is in 2012 uitgegroeid tot een Apache-project op het hoogste niveau. Het heeft drie hoofdcomponenten:

We zullen in de komende secties nog veel meer Kafka-concepten bestuderen. Laten we verder gaan.

Apache Kafka-concepten

Voordat we dieper graven, moeten we grondig zijn over enkele concepten in Apache Kafka. Dit zijn de termen die we moeten kennen, heel kort:

Onderwerppartities

Het concept voor Topic, Topic Partitions en offset kan ook duidelijk worden gemaakt met een illustratieve figuur:

Onderwerpverdeling en consumentencompensatie in Apache Kafka

Apache Kafka als Publish-subscribe berichtensysteem

Met Kafka publiceren de Producer-toepassingen berichten die bij een Kafka-knooppunt aankomen en niet rechtstreeks bij een consument. Vanaf dit Kafka-knooppunt worden berichten gebruikt door de consumententoepassingen.

Kafka Producent en Consument

Omdat een enkel onderwerp veel gegevens in één keer kan krijgen, is om Kafka horizontaal schaalbaar te houden, elk onderwerp onderverdeeld in partities en elke partitie kan leven op elke node-machine van een cluster.

Nogmaals, Kafka Broker houdt niet bij welke consument hoeveel datapakketten heeft verbruikt. Het is de de verantwoordelijkheid van de consument om bij te houden welke gegevens zijn verbruikt. Omdat Kafka geen bevestigingen en berichten van elke consumententoepassing bijhoudt, kan het veel meer consumenten beheren met een verwaarloosbare impact op de doorvoer. In productie volgen veel applicaties zelfs een patroon van batchconsumenten, wat betekent dat een consument alle berichten in een wachtrij met een regelmatig tijdsinterval consumeert.

Installatie

Om Apache Kafka te gaan gebruiken, moet het op de machine zijn geïnstalleerd. Lees hiervoor Apache Kafka installeren op Ubuntu.

Gebruiksvoorbeeld: bijhouden van websitegebruik

Kafka is een uitstekende tool om te gebruiken wanneer we activiteit op een website moeten volgen. De trackinggegevens omvatten en zijn niet beperkt tot paginaweergaven, zoekopdrachten, uploads of andere acties die gebruikers kunnen ondernemen. Wanneer een gebruiker op een website is, kan de gebruiker een aantal acties ondernemen wanneer hij/zij door de website surft.

Wanneer een nieuwe gebruiker zich bijvoorbeeld op een website registreert, kan de activiteit worden bijgehouden in welke volgorde een nieuwe gebruiker de functies van een website verkent, of de gebruiker zijn profiel naar behoefte instelt of er de voorkeur aan geeft direct naar de functies van de website te gaan. website. Telkens wanneer de gebruiker op een knop klikt, worden de metadata voor die knop verzameld in een datapakket en verzonden naar het Kafka-cluster van waaruit de analyseservice voor de applicatie deze gegevens kan verzamelen en nuttige inzichten over de gerelateerde gegevens kan produceren. Als we de taken in stappen willen verdelen, ziet het proces er als volgt uit:

  1. Een gebruiker registreert zich op een website en gaat naar het dashboard. De gebruiker probeert direct toegang te krijgen tot een functie door op een knop te drukken.
  2. De webapplicatie construeert een bericht met deze metadata naar een onderwerppartitie van onderwerp "klik".
  3. Het bericht wordt toegevoegd aan het vastleggingslogboek en de offset wordt verhoogd
  4. De consument kan nu het bericht van de Kafka Broker ophalen en het gebruik van de website in realtime weergeven en gegevens uit het verleden weergeven als de offset wordt teruggezet naar een mogelijke waarde uit het verleden

Gebruiksvoorbeeld: berichtenwachtrij

Apache Kafka is een uitstekende tool die kan dienen als vervanging voor message broker-tools zoals RabbitMQ. Asynchrone berichten helpen bij het ontkoppelen van de applicaties en creëren een zeer schaalbaar systeem.

Net als het concept van microservices, kunnen we in plaats van één grote applicatie te bouwen, de applicatie in meerdere delen verdelen en elk deel heeft een zeer specifieke verantwoordelijkheid. Op deze manier kunnen de verschillende delen ook in volledig onafhankelijke programmeertalen worden geschreven! Kafka heeft een ingebouwd partitie-, replicatie- en fouttolerantiesysteem dat het goed maakt als een grootschalig berichtenmakelaarsysteem.

Onlangs wordt Kafka ook gezien als een zeer goede oplossing voor het verzamelen van logbestanden die de serverbroker voor het verzamelen van logbestanden kan beheren en deze bestanden aan een centraal systeem kan verstrekken. Met Kafka is het mogelijk om elke gebeurtenis te genereren waarvan u wilt dat een ander deel van uw toepassing hiervan op de hoogte is.

Kafka gebruiken op LinkedIn

Het is interessant om op te merken dat Apache Kafka eerder werd gezien en gebruikt als een manier waardoor datapijplijnen consistent konden worden gemaakt en waardoor gegevens in Hadoop werden opgenomen. Kafka werkte uitstekend wanneer meerdere databronnen en bestemmingen aanwezig waren en het bieden van een apart pijplijnproces voor elke combinatie van bron en bestemming niet mogelijk was. LinkedIn's Kafka-architect, Jay Kreps, beschrijft dit bekende probleem goed in een blogpost:

Mijn eigen betrokkenheid hierbij begon rond 2008 nadat we onze sleutelwaardewinkel hadden verscheept. Mijn volgende project was om te proberen een werkende Hadoop-setup op gang te krijgen en enkele van onze aanbevelingsprocessen daarheen te verplaatsen. Omdat we weinig ervaring op dit gebied hebben, hebben we natuurlijk een paar weken begroot voor het in- en uitchecken van gegevens, en de rest van onze tijd voor het implementeren van mooie voorspellingsalgoritmen. Dus begon een lange slog.

Apache Kafka en Flume

Als je deze twee gaat vergelijken op basis van hun functies, zul je veel gemeenschappelijke kenmerken vinden. Hier zijn er een aantal:

Conclusie

In deze les hebben we gekeken naar veel concepten over Apache Kafka. Lees hier meer op Kafka gebaseerde berichten.

Hoe een spel op Linux te ontwikkelen
Tien jaar geleden zouden niet veel Linux-gebruikers voorspellen dat hun favoriete besturingssysteem ooit een populair spelplatform voor commerciële vi...
Open source-poorten van commerciële game-engines
Gratis, open source en platformonafhankelijke game-engine-recreaties kunnen worden gebruikt om zowel oude als enkele van de vrij recente gametitels te...
Beste opdrachtregelspellen voor Linux
De opdrachtregel is niet alleen je grootste bondgenoot bij het gebruik van Linux, hij kan ook de bron van entertainment zijn omdat je hem kunt gebruik...