Apache Kafka - İş Akışı
Şu an itibariyle Kafka'nın temel kavramlarını tartıştık. Şimdi Kafka'nın iş akışına biraz ışık tutalım.
Kafka, bir veya daha fazla bölüme ayrılmış bir konu koleksiyonudur. Bir Kafka bölümü, her mesajın kendi indeksiyle (ofset olarak adlandırılır) tanımlandığı doğrusal sıralı bir mesaj dizisidir. Bir Kafka kümesindeki tüm veriler, bölümlerin ayrık birleşimidir. Gelen mesajlar bir bölümün sonunda yazılır ve mesajlar tüketiciler tarafından sırayla okunur. Dayanıklılık, mesajların farklı aracılara kopyalanmasıyla sağlanır.
Kafka, hızlı, güvenilir, kalıcı, hata toleransı ve sıfır kesinti tarzında hem pub-sub hem de kuyruk tabanlı mesajlaşma sistemi sağlar. Her iki durumda da üreticiler mesajı bir konuya gönderir ve tüketici ihtiyaçlarına göre herhangi bir mesajlaşma sistemini seçebilir. Tüketicinin kendi tercih ettiği mesajlaşma sistemini nasıl seçebileceğini anlamak için bir sonraki bölümdeki adımları takip edelim.
Pub-Sub Mesajlaşma İş Akışı
Aşağıda, Pub-Sub Mesajlaşma'nın adım adım iş akışı verilmiştir -
Yapımcılar düzenli aralıklarla bir konuya mesaj gönderirler.
Kafka broker, tüm mesajları o konu için yapılandırılmış bölümlerde saklar. Mesajların bölümler arasında eşit olarak paylaşılmasını sağlar. Üretici iki mesaj gönderirse ve iki bölüm varsa, Kafka bir mesajı ilk bölüme ve ikinci mesajı ikinci bölüme kaydedecektir.
Tüketici, belirli bir konuya abone olur.
Tüketici bir konuya abone olduktan sonra Kafka, konunun mevcut karşılığını tüketiciye sunacak ve aynı zamanda Zookeeper topluluğundaki ofseti kaydedecektir.
Tüketici, Kafka'dan yeni mesajlar için düzenli aralıklarla (100 Ms gibi) talep edecektir.
Kafka, üreticilerden gelen mesajları aldıktan sonra bu mesajları tüketicilere iletir.
Tüketici mesajı alacak ve işleyecektir.
Mesajlar işlendikten sonra, tüketici Kafka aracısına bir onay gönderecektir.
Kafka bir onay aldığında, ofseti yeni değere değiştirir ve Zookeeper'da günceller. Zookeeper'da ofsetler korunduğundan, tüketici sunucu kesintileri sırasında bile sonraki mesajı doğru bir şekilde okuyabilir.
Yukarıdaki akış, tüketici talebi durdurana kadar tekrarlanacaktır.
Tüketici, herhangi bir zamanda bir konunun istenen ofsetine geri sarma / atlama ve sonraki tüm mesajları okuma seçeneğine sahiptir.
Kuyruk Mesajı / Tüketici Grubu İş Akışı
Tek bir tüketici yerine bir kuyruk mesajlaşma sisteminde, aynı Grup Kimliğine
sahip bir tüketici grubu bir konuya abone olacaktır. Basit bir ifadeyle, aynı Grup Kimliğine
sahip bir konuya abone olan tüketiciler tek bir grup olarak kabul edilir ve mesajlar aralarında paylaşılır. Bu sistemin gerçek iş akışını kontrol edelim.
Yapımcılar düzenli aralıklarla bir konuya mesaj gönderirler.
Kafka, tüm mesajları önceki senaryoya benzer şekilde o konu için yapılandırılan bölümlerde depolar.
Belirli bir konuya tek tüketici abone, farz
Konu-01
ileGrup kimliği
olarakGrup-1
.Pub-Sub Mesajlaşma aynı şekilde tüketici ile Kafka etkileşimde yeni tüketici aynı konuyu, abone dek
Konu-01
ile aynıGrubu kimliği
olarakGrup-1
.Yeni tüketici geldiğinde Kafka, operasyonunu paylaşım moduna geçirir ve verileri iki tüketici arasında paylaşır. Bu paylaşım, tüketici sayısı o konu için yapılandırılmış bölüm sayısına ulaşana kadar devam edecektir.
Tüketici sayısı bölüm sayısını aştığında, yeni tüketici, mevcut tüketicilerden herhangi biri aboneliğini iptal edene kadar başka bir mesaj almayacaktır. Bu senaryo, Kafka'daki her tüketiciye en az bir bölüm atanacağı ve tüm bölümler mevcut tüketicilere atandıktan sonra yeni tüketicilerin beklemesi gerekeceği için ortaya çıkar.
Bu özelliğe
Tüketici Grubu
da denir . Aynı şekilde Kafka, her iki sistemin de en iyisini çok basit ve verimli bir şekilde sağlayacaktır.
ZooKeeper'ın Rolü
Apache Kafka'nın kritik bir bağımlılığı, dağıtılmış bir yapılandırma ve senkronizasyon hizmeti olan Apache Zookeeper'dır. Zookeeper, Kafka brokerları ve tüketiciler arasında koordinasyon arayüzü olarak hizmet eder. Kafka sunucuları, bir Zookeeper kümesi aracılığıyla bilgi paylaşır. Kafka, konular, aracılar, tüketici ofsetleri (kuyruk okuyucular) vb. Hakkında bilgiler gibi temel meta verileri Zookeeper'da depolar.
Tüm kritik bilgiler Zookeeper'da depolandığından ve normal olarak bu verileri kendi topluluğu boyunca çoğalttığından, Kafka aracısının / Zookeeper'ın başarısızlığı Kafka kümesinin durumunu etkilemez. Zookeeper yeniden başladığında Kafka eyaleti geri getirecek. Bu, Kafka için sıfır kesinti süresi sağlar. Kafka komisyoncusu arasındaki lider seçimi, lider başarısızlığı durumunda Zookeeper kullanılarak da yapılır.
Zookeeper hakkında daha fazla bilgi edinmek için lütfen hayvan bakıcısına başvurun
Bir sonraki bölümde makinenize Java, ZooKeeper ve Kafka'yı nasıl yükleyeceğinize devam edelim.