Apache Kafka

Apache Kafka-zelfstudie

Apache Kafka-zelfstudie
In deze les zullen we zien hoe we Apache Kafka kunnen gebruiken en wat het nut ervan is. We zullen de verschillende terminologieën die ermee te maken hebben grondig bekijken en er ook mee aan de slag gaan.

Apache Kafka

Laten we voor een definitie op hoog niveau een korte definitie voor Apache Kafka geven:

Apache Kafka is een gedistribueerd, fouttolerant, horizontaal schaalbaar, commit-logboek.

Dat waren enkele hoogstaande woorden over Apache Kafka. Laten we de concepten hier in detail begrijpen.

Een onderwerp in Apache Kafka is net een wachtrij waarin berichten worden opgeslagen. Deze berichten worden gedurende een instelbare tijd opgeslagen en het bericht wordt pas verwijderd als deze tijd is verstreken, zelfs als het door alle bekende consumenten is gebruikt.

Kafka is schaalbaar omdat het de consumenten zijn die het bericht dat het laatst door hen is opgehaald, daadwerkelijk opslaan als een 'offset'-waarde. Laten we eens kijken naar een figuur om dit beter te begrijpen:

Onderwerpverdeling en consumentencompensatie in Apache Kafka

Aan de slag met Apache Kafka

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

Zorg ervoor dat je een actieve Kafka-installatie hebt als je voorbeelden wilt proberen die we later in de les zullen presenteren.

Hoe werkt het?

Met Kafka, de Producent toepassingen publiceren berichten die aankomt bij een Kafka Knooppunt en niet rechtstreeks aan een Consument. Vanuit deze Kafka Node worden berichten geconsumeerd door de Klant toepassingen.

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. Laten we proberen het voor te stellen:

Onderwerppartities


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.

Persistentie op schijf

Kafka bewaart de berichtrecords die het van Producers krijgt op schijf en bewaart ze niet in het geheugen. Een vraag die kan rijzen is hoe dit dingen haalbaar en snel maakt? Dit heeft verschillende redenen waardoor het een optimale manier is om de berichtenrecords te beheren:

Gegevensdistributie en -replicatie

Zoals we hierboven hebben bestudeerd dat een onderwerp is verdeeld in partities, wordt elk berichtrecord gerepliceerd op meerdere knooppunten van het cluster om de volgorde en gegevens van elk record te behouden in het geval dat een van de knooppunten sterft.

Ook al wordt een partitie op meerdere knooppunten gerepliceerd, er is nog steeds een partitie leider knooppunt waardoor applicaties gegevens over het onderwerp lezen en schrijven en de leider gegevens repliceert op andere knooppunten, die worden genoemd als volgers van die partitie.

Als de berichtrecordgegevens van groot belang zijn voor een toepassing, kan de garantie dat het berichtrecord veilig is in een van de knooppunten worden vergroot door de replicatiefactor van de Cluster.

Wat is Dierenverzorger??

Zookeeper is een zeer fouttolerante, gedistribueerde sleutelwaardeopslag. Apache Kafka is sterk afhankelijk van Zookeeper voor het opslaan van clustermechanica zoals de hartslag, het distribueren van updates/configuraties, enz.).

Het stelt de Kafka-makelaars in staat zich op zichzelf te abonneren en te weten wanneer er een wijziging is opgetreden met betrekking tot een partitieleider en knooppuntdistributie.

Producenten- en consumententoepassingen communiceren rechtstreeks met Zookeeper applicatie om te weten welk knooppunt de partitieleider is voor een onderwerp, zodat ze lees- en schrijfbewerkingen kunnen uitvoeren vanuit de partitieleider.

Streamen

Een streamprocessor is een hoofdcomponent in een Kafka-cluster die een continue stroom berichtrecordgegevens van invoeronderwerpen haalt, deze gegevens verwerkt en een gegevensstroom creëert om onderwerpen uit te voeren die van alles kunnen zijn, van prullenbak tot een database.

Het is heel goed mogelijk om eenvoudige verwerking rechtstreeks uit te voeren met behulp van de producent/consumenten-API's, maar voor complexe verwerking zoals het combineren van streams, biedt Kafka een geïntegreerde Streams API-bibliotheek, maar houd er rekening mee dat deze API bedoeld is om te worden gebruikt binnen onze eigen codebase en dat doet het niet' t lopen op een makelaar. Het werkt vergelijkbaar met de consumenten-API en helpt ons het streamverwerkingswerk over meerdere applicaties uit te schalen.

Wanneer Apache Kafka . gebruiken?

Zoals we in de bovenstaande secties hebben bestudeerd, kan Apache Kafka worden gebruikt om een ​​groot aantal berichtrecords af te handelen die tot een vrijwel oneindig aantal onderwerpen in onze systemen kunnen behoren.

Apache Kafka is een ideale kandidaat als het gaat om het gebruik van een service waarmee we gebeurtenisgestuurde architectuur in onze applicaties kunnen volgen. Dit komt door de mogelijkheden van datapersistentie, fouttolerante en sterk gedistribueerde architectuur waar kritieke applicaties kunnen vertrouwen op zijn prestaties.

De schaalbare en gedistribueerde architectuur van Kafka maakt integratie met microservices zeer eenvoudig en stelt een applicatie in staat zichzelf te ontkoppelen met veel bedrijfslogica.

Een nieuw onderwerp maken

We kunnen een testonderwerp maken testen op Apache Kafka-server met het volgende commando:

Een onderwerp maken

sudo kafka-onderwerpen.sh --create --zookeeper localhost:2181 --replicatiefactor 1
--partities 1 --onderwerp testen

Dit is wat we terugkrijgen met deze opdracht:

Nieuw Kafka-onderwerp maken


Er wordt een testonderwerp gemaakt dat we kunnen bevestigen met het genoemde commando:

Kafka Onderwerp aanmaak bevestiging

Berichten schrijven over een onderwerp

Zoals we eerder hebben bestudeerd, is een van de API's die aanwezig zijn in Apache Kafka de Producer-API. We zullen deze API gebruiken om een ​​nieuw bericht te maken en te publiceren naar het onderwerp dat we zojuist hebben gemaakt:

Bericht naar onderwerp schrijven

sudo kafka-console-producer.sh --broker-list localhost:9092 --topic testing

Laten we de uitvoer voor deze opdracht bekijken:

Bericht publiceren naar Kafka Topic


Zodra we op de toets drukken, zien we een nieuw pijlteken (>), wat betekent dat we nu gegevens kunnen bekijken:

Een bericht typen


Typ gewoon iets in en druk op om een ​​nieuwe regel te beginnen. Ik typte 3 regels tekst in:

Berichten lezen van onderwerp

Nu we een bericht hebben gepubliceerd over het Kafka-onderwerp dat we hebben gemaakt, zal dit bericht daar gedurende een instelbare tijd staan. We kunnen het nu lezen met de Consumenten-API:

Berichten lezen van onderwerp

sudo kafka-console-consumer.sh --dierenverzorger localhost:2181 --
onderwerp testen --vanaf het begin

Dit is wat we terugkrijgen met deze opdracht:

Commando om Bericht van Kafka Topic te lezen


We kunnen de berichten of regels zien die we hebben geschreven met behulp van de Producer API, zoals hieronder weergegeven:

Als we nog een nieuw bericht schrijven met behulp van de Producer API, wordt dit ook direct weergegeven aan de kant van de consument:

Publiceren en consumeren tegelijk

Conclusie

In deze les hebben we gekeken hoe we Apache Kafka gaan gebruiken, wat een uitstekende Message Broker is en ook kan fungeren als een speciale gegevenspersistentie-eenheid.

Strijd om Wesnoth 1.13.6 Ontwikkeling vrijgegeven
Strijd om Wesnoth 1.13.6 die vorige maand werd uitgebracht, is de zesde ontwikkelingsrelease in de 1.13.x-serie en het levert een aantal verbeteringen...
Hoe League Of Legends op Ubuntu 14 te installeren.04
Als je fan bent van League of Legends, dan is dit een kans voor jou om League of Legends te testen. Merk op dat LOL wordt ondersteund op PlayOnLinux a...
Installeer de nieuwste OpenRA Strategy Game op Ubuntu Linux
OpenRA is een Libre/Free Real Time Strategy-game-engine die de vroege Westwood-games nabootst, zoals de klassieke Command & Conquer: Red Alert. Gedist...