Apache Kafka

Apache Kafka-partitionering

Apache Kafka-partitionering
In deze les zullen we zien wat we bedoelen met partitioneren in Apache Kafka en hoe dit de prestaties van een Kafka-cluster beïnvloedt. Het concept van partitionering staat centraal in het Kafka-cluster omdat het partitionering gebruikt als een primaire manier om te schalen en de prestaties te verhogen.

Let op: dit is geen introductieles. Lees wat Apache Kafka is en hoe het werkt voordat je verder gaat met deze les om een ​​dieper inzicht te krijgen.

Onderwerpen in Kafka

Een Topic in Kafka is iets waar een bericht naar wordt verzonden. De consumententoepassingen die in dat onderwerp geïnteresseerd zijn, halen de boodschap binnen dat onderwerp en kunnen alles met die gegevens doen. Tot een bepaalde tijd kan een willekeurig aantal consumententoepassingen dit bericht een willekeurig aantal keren ophalen pull.

Overweeg een onderwerp zoals de Ubuntu-blogpagina van LinuxHint. De lessen duren tot de eeuwigheid en een willekeurig aantal enthousiaste lezers kan deze lessen een aantal keren komen lezen of naar de volgende les gaan als ze willen. Deze lezers kunnen ook geïnteresseerd zijn in andere onderwerpen uit LinuxHint.

Onderwerp Partitionering

Kafka is ontworpen om zware applicaties te beheren en een groot aantal berichten in de wachtrij te plaatsen die binnen een onderwerp worden bewaard. Om een ​​hoge fouttolerantie te garanderen, is elk onderwerp verdeeld in meerdere onderwerppartities en wordt elke onderwerppartitie beheerd op een afzonderlijk knooppunt. Als een van de knooppunten uitvalt, kan een ander knooppunt fungeren als onderwerpleider en onderwerpen aan de geïnteresseerde consumenten aanbieden. Hier ziet u hoe dezelfde gegevens naar meerdere onderwerppartities worden geschreven:

Onderwerppartities


De bovenstaande afbeelding laat nu zien hoe dezelfde gegevens worden gerepliceerd over meerdere partities. Laten we eens visualiseren hoe verschillende partities als leider kunnen fungeren op verschillende knooppunten/partities:

Kafka Broker Partitionering

Wanneer een klant iets schrijft naar een onderwerp op een positie waarvoor Partition in Broker 0 de leider is, worden deze gegevens vervolgens over de brokers/nodes gerepliceerd, zodat het bericht veilig blijft:

Replicatie tussen brokerpartities

Meer partities, hogere doorvoer

Kafka maakt gebruik van parallellisme om een ​​zeer hoge doorvoer te bieden aan toepassingen voor producenten en consumenten. Eigenlijk, op dezelfde manier, behoudt het ook zijn status van een zeer fouttolerant systeem. Laten we eens kijken hoe hoge doorvoer wordt bereikt met parallellisme.

Wanneer een Producer-toepassing een bericht naar een partitie in Broker 0 schrijft, opent Kafka meerdere parallelle threads, zodat het bericht tegelijkertijd kan worden gerepliceerd naar alle geselecteerde Brokers. Aan de kant van de consument verbruikt een consumententoepassing berichten van een enkele partitie via een thread. Hoe meer partities, hoe meer consumententhreads kunnen worden geopend, zodat ze ook allemaal parallel kunnen werken. Dit betekent dat hoe meer partities in een cluster zijn, hoe meer parallellisme kan worden benut, waardoor een systeem met een zeer hoge doorvoer ontstaat.

Meer partities hebben meer bestandshandlers nodig

Zo heb je hierboven bestudeerd hoe we de prestaties van een Kafka-systeem kunnen verbeteren door alleen het aantal partities te vergroten. Maar we moeten voorzichtig zijn met welke limiet we op weg zijn.

Elke onderwerppartitie in Kafka wordt toegewezen aan een map in het bestandssysteem van de Serverbroker waar deze wordt uitgevoerd. Binnen die logdirectory zullen er twee bestanden zijn: een voor de index en een andere voor de feitelijke gegevens per logsegment. Momenteel opent in Kafka elke broker een bestandshandle voor zowel de index als het gegevensbestand van elk logsegment. Dit betekent dat als je 10.000 partities op een enkele broker hebt, dit zal resulteren in 20.000 bestandshandlers die parallel lopen. Hoewel, dit gaat gewoon over de configuratie van de Broker. Als het systeem waarop de Broker wordt ingezet een hoge configuratie heeft, zal dit nauwelijks een probleem zijn.

Risico met groot aantal partities

Zoals we in de bovenstaande afbeeldingen hebben gezien, maakt Kafka gebruik van intra-clusterreplicatietechniek om een ​​bericht van een leider te repliceren naar de Replica-partities die in andere Brokers liggen. Zowel de producent- als de consumententoepassing lezen en schrijven naar een partitie die momenteel de leider is van die partitie. Wanneer een makelaar faalt, is de leider op die makelaar niet meer beschikbaar. De metadata over wie de leider is, wordt bewaard in Zookeeper. Op basis van deze metadata wijst Kafka automatisch de leiding van de partitie toe aan een andere partitie.

Wanneer een broker wordt afgesloten met een clean-opdracht, zal het controllerknooppunt van het Kafka-cluster de leiders van de afsluitende broker serieel verplaatsen i.e. een per keer. als we bedenken dat het verplaatsen van een enkele leider 5 milliseconden duurt, zal de onbeschikbaarheid van de leiders de consumenten niet storen, aangezien de onbeschikbaarheid voor een zeer korte periode is. Maar als we bedenken wanneer de Broker op een onreine manier is vermoord en deze Broker 5000 partities bevat en van deze waren 2000 de partitieleiders, dan zal het toewijzen van nieuwe leiders voor al deze partities 10 seconden duren, wat erg hoog is als het gaat om zeer hoge veelgevraagde toepassingen.

Conclusie

Als we als denker op hoog niveau beschouwen, leiden meer partities in een Kafka-cluster tot een hogere doorvoer van het systeem. Met deze efficiëntie in gedachten, moet men ook rekening houden met de configuratie van het Kafka-cluster dat we moeten onderhouden, het geheugen dat we aan dat cluster moeten toewijzen en hoe we de beschikbaarheid en latentie kunnen beheren als er iets misgaat.

Lees hier meer op Ubuntu gebaseerde berichten en ook nog veel meer over Apache kafka.

Hoe de linker- en rechtermuisknop op Windows 10 pc te veranderen
Het is nogal een norm dat alle computermuisapparaten ergonomisch zijn ontworpen voor rechtshandige gebruikers. Maar er zijn muisapparaten beschikbaar ...
Emuleer muisklikken door te zweven met Clickless Mouse in Windows 10
Het gebruik van een muis of toetsenbord in de verkeerde houding of overmatig gebruik kan leiden tot veel gezondheidsproblemen, waaronder spanning, car...
Voeg muisbewegingen toe aan Windows 10 met deze gratis tools
In de afgelopen jaren zijn computers en besturingssystemen sterk geëvolueerd. Er was een tijd dat gebruikers opdrachten moesten gebruiken om door best...