Apache Kafka kezdettel

(2019.06.13.)

Mi az Apache Kafka?

Az Apache Kafka eredetileg elosztott közzététel-előfizetés alapú, csak függelékkel ellátott üzenetküldő platform által kifejlesztett LinkedIn és később a Apache Foundation .

(* A kép szépítésre szolgál)

Esetek használata

  • Üzenetek
  • Napló összesítése
  • Adatfolyam feldolgozása
  • Napló végrehajtása
  • Események beszerzése stb.

Hogyan működik?

Kafka a pub-sub modellben működik. Tehát lesz egy fogyasztói / fogyasztói csoport és kiadó.

A gyártó adatokat közöl egy adott témában, a témára feliratkozott fogyasztó pedig adatokat fog felhasználni. Több gyártó is közzéteheti ugyanazt a témát, de egyszerre csak egy fogyasztó használhat adatokat egy témáról.

Most megkérdezheti, hogy csak egy a fogyasztóknak egyszerre szabad egy témából fogyasztaniuk, és ha több ezer esemény érkezik, hogyan méretezzük őket?

Oké. Ebben az esetben a témát feloszthatjuk partíciókra a méretezhetőség elérése érdekében.

Amikor a témát particionáljuk, a partícióban lévő minden üzenetnek van egy offset\_id / message\_id neve. A bal oldali képen 3 partíciót készítettünk, és minden producer egy eseményt küld egy adott partíciónak. A fogyasztó pedig egy adott partícióról fog olvasni. Most, ha 300 esemény / mp-et küldünk, 3-ra lesz osztva, így minden partíciónak 100 üzenete lesz. Ily módon elérhetjük a terheléselosztást. Amikor partíciót készítünk, a Kafka csak a partíciószintű üzenetsorrendet biztosítja . A partícióval történő rendezés érdekében a kulcsot kell használnunk.

Ha növekvő eseményeket kapunk, akkor több partíciót kell végrehajtanunk, és több fogyasztót kell hozzáadnunk a méretezéshez és a terhelés-kiegyensúlyozáshoz .

Amint megkaptuk az eseményt, be kell írnunk a naplózást a Kafkába, így Kafka megérti, hogy az esemény feldolgozásra került, és a Kafka nem küldi újra. Ha a feldolgozás közepén az alkalmazásunk összetörik, Kafka újra elküldi az eseményt feldolgozásra.

Replikációs tényező:

A replikációs tényező az, hogy a Kafka-ban lévő adatokat hogyan replikálják a különböző Kafka-brókerek. Tegyük fel, hogy az N = 3 replikációs tényezőt választottuk, az adatokat további 2 brókernek replikáljuk. Tehát a Kafka továbbra is működik, ha az N-1 bróker lemegy, mert legalább egy bróker életben van az adatokkal, hogy tovább működhessen.

Apache Zookeeper?

Az Apache Zookeeper központosított szolgáltatás elosztott rendszerek számára egy hierarchikus kulcsérték-tárolóhoz, amelyet elosztott konfigurációs szolgáltatás, szinkronizálás biztosítására használnak szolgáltatás és elnevezési nyilvántartás nagy elosztott rendszerek számára. Az Apache Kafka nem működik Zookeeper nélkül. Kafka-fürtkezelés, ha egy bróker feljön vagy lemegy, ha új téma jön létre …. Ezt az adattípust szinkronizálják a különböző Kafka-brókerekkel a Zookeeperen keresztül.

Spinup Kafka>

docker-compose up

Fogyasztó (Golang)>

Producer (Kotlin)>

Eredmény>

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

Erőforrások:

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

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük