Begynner med Apache Kafka

(13. juni 2019)

Hva er Apache Kafka?

Apache Kafka er en distribuert publiseringsabonnementbasert append-only meldingsplattform opprinnelig utviklet av LinkedIn og senere Donert til Apache Foundation .

(* Bildet er for forskjønnelse)

Bruk tilfeller

  • Meldinger
  • Loggaggregering
  • Behandling av strøm
  • Forpliktelseslogg
  • Hendelsessourcing osv.

Hvordan fungerer det?

Kafka fungerer i pub-sub-modellen. Så det vil være en forbruker / forbrukergruppe og utgiver.

Produsenten vil publisere data til et bestemt emne og forbruker som abonnerer på emnet, vil konsumere data. Flere produsenter kan publisere til samme emne, men bare en forbruker kan konsumere data fra et emne om gangen.

Nå kan du spørre om bare en forbruker har lov til å konsumere fra et emne om gangen, og hvis det er tusenvis av hendelser som kommer, hvordan skalerer vi dem?

Ok. I så fall kan vi dele emnet i partisjoner for å oppnå skalerbarhet.

Når vi deler partiet av emnet, har hver melding i partisjonen en offset\_id / message\_id. På bildet til venstre har vi laget 3 partisjoner, og hver produsent vil sende en begivenhet til en bestemt partisjon. Og forbrukeren vil lese fra en bestemt partisjon. Nå hvis vi har 300 hendelser / sek som blir sendt, vil den bli delt inn i 3, så hver partisjon vil ha 100 meldinger / sek. På denne måten kan vi oppnå belastningsbalansering. Når vi gjør partisjon, sørger Kafka bare for meldingsrekkefølge for partisjonsnivå . For å oppnå orden med partisjonering må vi bruke nøkkel .

Hvis vi får økende hendelser, må vi gjøre flere partisjoner og legge til flere forbrukere for å skalere og oppnå Load-Balancing .

Når vi mottar hendelsen, må vi forplikte oss til Kafka, så Kafka vil forstå at hendelsen er behandlet, og Kafka vil ikke sende den igjen. Hvis appen vår knuses midt i behandlingen, vil Kafka sende hendelsen på nytt for å behandle.

Replikasjonsfaktor:

Replikasjonsfaktor er hvordan data i Kafka vil bli replikert med forskjellige Kafka-meglere. La oss si at vi har valgt replikasjonsfaktor N = 3, dataene vil bli replikert til 2 meglere til. Så Kafka vil fortsatt fungere hvis N-1-megler går ned, fordi det er minst en megler i live med dataene for å holde det i orden.

Hva er Apache Zookeeper?

Apache Zookeeper er en sentralisert tjeneste for distribuerte systemer til en hierarkisk nøkkelverdilager, som brukes til å gi en distribuert konfigurasjonstjeneste, synkronisering service- og navneregister for store distribuerte systemer. Apache Kafka fungerer ikke uten Zookeeper. Kafka-klyngeadministrasjon, hvis en megler kommer opp eller går ned, hvis et nytt emne opprettet … denne typen data blir synkronisert med forskjellige Kafka-meglere gjennom Zookeeper.

Spinup Kafka>

docker-compose up

Forbruker (Golang)>

Produsent (Kotlin)>

Resultat>

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

Ressurser:

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

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *