Începând cu Apache Kafka

(13 iunie 2019)

Ce este Apache Kafka?

Apache Kafka este inițial o platformă de mesagerie distribuită numai pentru abonare publicată și abonată dezvoltat de LinkedIn și ulterior donat către Fundația Apache .

(* Imaginea este pentru înfrumusețare)

Cazuri de utilizare

  • Mesagerie
  • Agregare jurnal
  • Procesare flux
  • Jurnal comitere
  • Aprovizionare evenimente etc.

Cum funcționează?

Kafka funcționează în modelul pub-sub. Deci, va exista un grup de consumatori / un editor și un editor.

Producătorul va publica date la un anumit subiect, iar consumatorul abonat la subiect va consuma date. Mai mulți producători ar putea publica pe același subiect, dar un singur consumator poate consuma date dintr-un subiect la un moment dat.

Acum puteți întreba dacă numai unul consumatorului i se permite să consume dintr-un subiect la un moment dat și dacă apar mii de evenimente cum le scalăm?

Bine. În acest caz, putem împărți subiectul în partiții pentru a atinge scalabilitatea.

Când facem partiția subiectului, fiecare mesaj din partiție are un offset\_id / message\_id. În imaginea din stânga am făcut 3 partiții și fiecare producător va trimite un eveniment unei partiții specifice. Iar consumatorul va citi dintr-o anumită partiție. Acum, dacă sunt trimise 300 de evenimente / sec, acesta va fi împărțit în 3, deci fiecare partiție va avea 100 de mesaje / sec. În acest fel, putem realiza echilibrarea sarcinii. Când facem partiție, Kafka asigură doar ordinea mesajului la nivel de partiție . Pentru a realiza ordinea cu partiționare trebuie să folosim cheia .

Dacă creștem evenimentele, trebuie să facem mai multe partiții și să adăugăm mai mulți consumatori pentru a scala și a realiza echilibrarea încărcării .

Odată ce primim evenimentul, trebuie să trimitem jurnalul către Kafka, astfel încât Kafka să înțeleagă că evenimentul a fost procesat și Kafka nu îl va mai trimite. Dacă în mijlocul procesării aplicației noastre zdrobește, Kafka va trimite din nou acel eveniment pentru a procesa.

Factor de replicare:

Factorul de replicare este modul în care datele din Kafka vor fi reproduse cu diferiți brokeri Kafka. Să presupunem că am ales factorul de replicare N = 3, datele vor fi reproduse la încă 2 brokeri. Așadar, Kafka va funcționa în continuare dacă brokerul N-1 cade, deoarece există cel puțin un broker în viață cu datele pentru a le menține funcționale.

Ce este Apache Zookeeper?

Apache Zookeeper este un serviciu centralizat pentru sisteme distribuite într-un depozit ierarhic de valori-cheie, care este utilizat pentru a furniza un serviciu de configurare distribuită, sincronizare serviciu și registru de denumire pentru sisteme mari distribuite. Apache Kafka nu funcționează fără Zookeeper. Gestionarea clusterului Kafka, dacă un broker apare sau coboară, dacă s-a creat un nou subiect … acest tip de date fiind sincronizat cu un alt broker Kafka prin Zookeeper.

Spinup Kafka>

docker-compose up

Consumator (Golang)>

Producător (Kotlin)>

Rezultat>

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

Resurse:

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

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *