Beginnend met Apache Kafka

(13 juni 2019)

Wat is Apache Kafka?

Apache Kafka is oorspronkelijk een gedistribueerd, op publicaties gebaseerd, append-berichtenplatform ontwikkeld door LinkedIn en later gedoneerd aan Apache Foundation .

(* De afbeelding is voor verfraaiing)

Gebruiksgevallen

  • Berichten
  • Log-aggregatie
  • Streamverwerking
  • Commit-log
  • Event Sourcing enz.

Hoe werkt het?

Kafka werkt in het pub-sub-model. Er zal dus een consument / consumentengroep en een uitgever zijn.

De producent publiceert gegevens voor een specifiek onderwerp en de consument die op het onderwerp is geabonneerd, verbruikt gegevens. Meerdere producenten zouden over hetzelfde onderwerp kunnen publiceren, maar slechts één consument kan gegevens van een onderwerp tegelijk gebruiken.

Nu kun je je afvragen of er maar één de consument mag van een onderwerp tegelijk consumeren en als er duizenden evenementen komen, hoe kunnen we ze dan schalen?

Oké. In dat geval kunnen we het onderwerp opsplitsen in partities om schaalbaarheid te bereiken.

Wanneer we het onderwerp partitioneren, heeft elk bericht in de partitie een offset\_id / message\_id. Op de foto links hebben we 3 partities gemaakt en elke producer zal een evenement naar een specifieke partitie sturen. En de consument leest vanaf een specifieke partitie. Als we nu 300 gebeurtenissen / sec hebben verzonden, wordt het in 3 verdeeld, dus elke partitie heeft 100 berichten / sec. Op deze manier kunnen we Load-balancing realiseren. Wanneer we partitioneren, zorgt Kafka alleen voor de volgorde van berichten op partitieniveau . Om orde te krijgen met partitionering, moeten we de sleutel gebruiken.

Als het aantal gebeurtenissen toeneemt, moeten we meer partities maken en meer consumenten toevoegen om te schalen en load-balancing te bereiken .

Zodra we het evenement hebben ontvangen, moeten we een logboek aan Kafka vastleggen, zodat Kafka zal begrijpen dat het evenement is verwerkt en Kafka het niet opnieuw zal verzenden. Als onze app midden in de verwerking verplettert, zal Kafka die gebeurtenis opnieuw verzenden om te verwerken.

Replicatiefactor:

Replicatiefactor is hoe gegevens in Kafka worden gerepliceerd met verschillende Kafka-makelaars. Laten we zeggen dat we replicatiefactor N = 3 hebben gekozen, de gegevens zullen worden gerepliceerd naar nog 2 makelaars. Dus Kafka zal nog steeds werken als N-1 broker uitvalt, omdat er tenminste één broker in leven is met de gegevens om het werkend te houden.

Wat is Apache Zookeeper?

Apache Zookeeper is een gecentraliseerde service voor gedistribueerde systemen naar een hiërarchische sleutelwaardeopslag, die wordt gebruikt om een ​​gedistribueerde configuratieservice te bieden, synchronisatie service en naamgevingsregister voor grote gedistribueerde systemen. Apache Kafka werkt niet zonder Zookeeper. Beheer van Kafka-clusters, als een makelaar omhoog of omlaag komt, als er een nieuw onderwerp is gemaakt … dit type gegevens wordt gesynchroniseerd met een andere Kafka-makelaar via Zookeeper.

Spinup Kafka>

docker-compose up

Consument (Golang)>

Producer (Kotlin)>

Resultaat>

Waiting for messages...Topic : users.notification
Partition : 0
Offset : 1
Value : hello

Bronnen:

1. github.com/confluentinc/confluent-kafka-go
2. compile group: "io.opentracing.contrib", name: "opentracing-kafka-client", version: "0.1.2"

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *