Begynder med Apache Kafka

(13. juni 2019)

Hvad er Apache Kafka?

Apache Kafka er oprindelig en distribueret publicerings-abonnementbaseret append-only messaging platform udviklet af LinkedIn og senere Doneret til Apache Foundation .

(* Billedet er til forskønning)

Brug sager

  • Beskeder
  • Logaggregering
  • Streambehandling
  • Forpligtelseslog
  • Begivenhedssourcing osv.

Hvordan fungerer det?

Kafka arbejder i pub-sub-modellen. Så der vil være en forbruger / forbrugergruppe og udgiver.

Producenten vil offentliggøre data til et bestemt emne, og forbrugeren, der abonnerer på emnet, forbruger data. Flere producenter kunne offentliggøre det samme emne, men kun en forbruger er i stand til at forbruge data fra et emne ad gangen.

Nu kan du spørge, om der kun er én forbrugeren har lov til at forbruge fra et emne ad gangen, og hvis der er tusindvis af begivenheder, hvordan skalerer vi dem?

Okay. I så fald kan vi opdele emnet i partitioner for at opnå skalerbarhed.

Når vi laver partition af emnet, har hver meddelelse i partitionen et offset\_id / message\_id. På billedet til venstre har vi lavet 3 partitioner, og hver producent sender en begivenhed til en bestemt partition. Og forbrugeren læser fra en bestemt partition. Hvis der nu sendes 300 begivenheder / sek, opdeles den i 3, så hver partition vil have 100 beskeder / sek. På denne måde kan vi opnå belastningsbalancering. Når vi partitionerer, sikrer Kafka kun meddelelsesrækkefølgen for partitionsniveau . For at opnå orden med partitionering skal vi bruge nøglen .

Hvis vi får flere begivenheder, er vi nødt til at gøre flere partitioner og tilføje flere forbrugere til at skalere og opnå Load-Balancing .

Når vi modtager begivenheden, skal vi logge på Kafka, så Kafka forstår, at begivenheden er behandlet, og Kafka sender den ikke igen. Hvis midt i behandlingen af ​​vores app knuses, sender Kafka denne begivenhed igen til behandling.

Replikeringsfaktor:

Replikeringsfaktor er, hvordan data i Kafka replikeres med forskellige Kafka-mæglere. Lad os sige, at vi har valgt replikationsfaktor N = 3, dataene replikeres til 2 flere mæglere. Så Kafka vil stadig arbejde, hvis N-1-mægler går ned, fordi der er mindst en mægler i live med dataene for at holde det i gang.

Hvad er Apache Zookeeper?

Apache Zookeeper er en central service til distribuerede systemer til et hierarkisk nøgleværdilager, der bruges til at levere en distribueret konfigurationstjeneste, synkronisering service og navngivningsregister for store distribuerede systemer. Apache Kafka fungerer ikke uden Zookeeper. Kafka-klyngestyring, hvis en mægler kommer op eller går ned, hvis der oprettes et nyt emne … denne type data synkroniseres med forskellige Kafka-mæglere gennem Zookeeper.

Spinup Kafka>

docker-compose up

Forbruger (Golang)>

Producent (Kotlin)>

Resultat>

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

Ressourcer:

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

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *