DonanımHaber

Kafka etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Kafka etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Apache Kafka'nın Temel Bileşenleri, SSS ve Cevapları, Auto ve Manual Offset Çalışma Mantığı, Kafka Tüketici Grubu




Apache Kafka'nın temel bileşenlerini ve kavramlarını detaylandıralım:


Broker (Sunucu): Kafka'nın temel yapı taşıdır ve bireysel bir Kafka sunucusunu ifade eder. Kafka, dayanıklılığı ve yüksek erişilebilirliği desteklemek için bir dağıtık sistem olarak tasarlanmıştır. Birden fazla broker'ın birleşimi bir Kafka kümesi oluşturur ve bunlar genellikle birbirleriyle koordinasyon içinde çalışır. Her broker, verilerin bir parçasını saklayabilir ve böylece hata durumunda bile sistemin çalışmaya devam etmesini sağlar.


Controller (Denetleyici): Kafka kümesindeki özel bir broker rolüdür. Cluster içerisinde bölüm liderlerini seçme gibi önemli yönetim görevlerinden sorumludur. Aynı zamanda, bir broker çöktüğünde veya bir bölüm yeniden replike edilmesi gerektiğinde bunu yöneten de controller'dır.


Consumer Group (Tüketici Grubu): Kafka'da, birden fazla tüketici uygulaması bir tüketici grubu oluşturabilir. Bu grup, her tüketiciye belirli bölümleri atayarak ve böylece mesajları daha hızlı işleyerek verimliliği artırır. Tüketici grupları, büyük veri akışlarını etkili bir şekilde işlemek için kullanılır.


Topic (Konu): Verilerin gruplandığı ana yapıdır ve bir veritabanındaki tabloya benzer. Mesajlar, ilgili oldukları konulara göre sınıflandırılır ve bu konular altında saklanır.


Partition (Bölüm): Her konu, mesajların saklandığı birden fazla bölüme ayrılır. Bölümler, Kafka'nın yüksek erişilebilirlik ve paralel işleme özelliklerini mümkün kılan yapıdır. Her bölüm kendi içinde sıralıdır ve birden fazla üretici ve tüketici tarafından yazma/okuma işlemleri gerçekleştirilebilir.


Replica (Kopya): Kafka'nın hata toleransını sağlamak için her bir bölümün birden fazla kopyası bulunur. Bu kopyalar farklı broker'larda saklanır ve böylece bir broker çöktüğünde veri kaybı olmadan sistemin devam etmesi sağlanır.


Leader (Lider): Replikasyon sürecinde, her bölümün bir lider kopyası vardır. Bu lider kopya, bölüm için yazma ve okuma işlemlerinin yapıldığı asıl noktadır.


Follower (İzleyici): Lider dışındaki diğer kopyalar izleyicidir. Bunlar, lider kopyanın bir kopyasını tutar ve sürekli olarak liderden güncellemeleri alır. Bir izleyici, gerekli şartlar altında lider rolüne terfi edebilir.


Producer (Üretici): Kafka'ya mesaj gönderen uygulamalardır. Kafka Clients kütüphanesini kullanarak, üreticiler verileri Kafka broker'larına kaydeder.


Consumer (Tüketici): Kafka'dan mesaj okuyan uygulamalardır. Yine Kafka Clients kütüphanesini kullanarak, tüketiciler belirledikleri konulardan veya bölümlerden veri çekebilirler.


Message / Record (Mesaj / Kayıt): Üreticiler tarafından Kafka'ya gönderilen ve tüketiciler tarafından okunan veri birimleridir. Kafka'da bu veri birimlerine hem mesaj hem de kayıt denir ve bu terimler genellikle birbirlerinin yerine kullanılır.


Log (Kayıt Defteri): Broker'lar üzerinde saklanan mesajların immutable (değiştirilemez) ve sıralı bir yapıdır. Her bir bölümün log'u, o bölümdeki mesajların zaman sırasına göre sıralı bir kaydını tutar. Kafka'nın temelinde bu log yapısı yatar ve veri bütünlüğü ile güvenilirliğin temelini oluşturur.


Offset: Kafka içinde her bir mesajın veya kaydın log üzerindeki benzersiz konumunu belirleyen bir indekstir. Offset, bir bölüm içindeki mesajın sırasını ifade eder ve tüketicilerin hangi mesajı son olarak okuduklarını takip etmelerini sağlar. Böylece, bir tüketici herhangi bir zaman veri akışına bağlanabilir ve kaldığı yerden devam edebilir.


Topic-Partition-Replica Hierarchy (Konu-Bölüm-Kopya Hiyerarşisi): Kafka'nın veri saklama yapısını ifade eder. Bir konu içinde, belirli bir veri seti üzerinde paralel işlemleri mümkün kılmak için bölümlere ayrılmıştır. Her bölüm kendi içinde bir ya da daha fazla kopyaya (replica) sahip olabilir, bu kopyalar genellikle farklı brokerlar üzerinde dağıtılır. Her bir bölümün lider kopyası üzerinde yazma işlemleri gerçekleştirilirken, izleyici kopyalar lideri takip eder ve verinin güvenilir bir şekilde korunmasını sağlar.


Bu terimler, Kafka'nın nasıl çalıştığına dair genel bir anlayış sağlar ve Kafka'yı kullanarak büyük veri akışlarını işlemek, saklamak ve analiz etmek isteyenler için temel bilgileri içerir. Kafka, büyük ölçekte veri akışlarını yönetmek, güvenilir ve hızlı bir şekilde mesajlaşma yapmak için kullanılan bir platformdur ve bu temel bileşenlerin anlaşılması, Kafka'nın etkili bir şekilde kullanılmasının önemli bir parçasıdır.


Bu kavramlar hakkında SSS ve cevapları


Apache Kafka ile ilgili sıkça sorulan sorular (SSS) ve cevapları şunlardır:


1. Kafka Broker nedir?

Broker, Kafka'nın temel bir sunucusudur ve bir Kafka kümesinin bireysel bileşenidir. Birden fazla broker, yüksek erişilebilirlik ve ölçeklenebilirlik sağlamak için bir arada çalışır.


2. Kafka Controller'ın görevi nedir?

Controller, Kafka kümesindeki lider seçimleri gibi küme yönetim işlemlerini yürüten özel bir broker rolüdür. Ayrıca sistemdeki arızaları yönetir ve hata durumunda bölüm replikasyonunu koordine eder.


3. Consumer Group ne işe yarar?

Consumer Group, Kafka'dan veri okuma işini bölerek daha verimli bir veri işleme sağlar. Her tüketici, belirli bölümlere atanır ve böylece bir grup içinde iş yükü paylaşılır.


4. Kafka Topic'leri nasıl çalışır?

Topic'ler, benzer verilerin gruplandığı kategorilerdir. Bir veritabanındaki tablolar gibi düşünülebilir ve her topic, mesajları saklamak için bölümlere ayrılır.


5. Partition ve Replica kavramları ne anlama gelir?

Partition, bir topic'in alt bölümleridir ve her bölüm kendi içinde sıralıdır. Replica ise, bir bölümün kopyalarıdır ve hata toleransını sağlamak için farklı brokerlarda tutulur.


6. Kafka'da Leader ve Follower terimleri neyi ifade eder?

Her Kafka bölümünün bir lider (leader) replikası vardır ve tüm yazma ve okuma işlemleri bu lider üzerinden gerçekleşir. Follower replikalar, liderin bir kopyasını tutar ve veriyi sürekli olarak eşler.


7. Producer ve Consumer arasındaki fark nedir?

Producer, Kafka'ya mesaj gönderen uygulamadır, Consumer ise Kafka'dan mesaj okuyan uygulamadır.


8. Kafka'da Message / Record ne anlama gelir?

Kafka'da her bir veri birimi mesaj veya kayıt olarak adlandırılır. Bunlar, Producer tarafından gönderilir ve Consumer tarafından okunur.


9. Log ve Offset kavramları ne işe yarar?

Log, Kafka bölümlerindeki mesajların sıralı ve değiştirilemez kaydını tutar. Offset ise, bir mesajın bölüm içindeki sıralı pozisyonunu belirtir ve tüketicilere kaldıkları yerden devam etmelerini sağlar.


10. Topic-Partition-Replica Hierarchy neyi ifade eder?

Bu, Kafka'nın veri saklama yapısını tanımlar. Bir topic, birden fazla bölüme ayrılabilir ve her bölüm, veri bütünlüğü ve erişilebilirliği için replikalara sahip olabilir.


Bu SSS, Kafka'nın temel bileşenleri ve onların işlevleri hakkında daha iyi bir anlayış kazanmak isteyenler için başlangıç noktası olabilir. Kafka ile ilgili daha derin sorular, kurulum, yapılandırma ve en iyi uygulamalar gibi konular, kullanıcıların ihtiyaçlarına ve kullanım senaryolarına göre genişleyebilir.


Kafkadaki offset yapısının detaylı çalışma mantığı 


Apache Kafka'da offset yapısı, Kafka'nın mesajları nasıl sakladığı ve tüketicilerin mesajları nasıl okuduğu ile yakından ilişkilidir. İşte offset yapısının detaylı çalışma mantığı:


Offset Nedir?

Offset, Kafka'da her bir mesajın bölüm içerisindeki sırasını belirten sayısal bir değerdir. Bir Kafka bölümü log olarak adlandırılan sıralı bir mesaj setini tutar ve her mesaj bu log içinde artan bir offset ile etiketlenir.


Offset'in Çalışma Mantığı:


Sıralı Depolama:


Her Kafka bölümünde, mesajlar oluşturuldukları sırayla depolanır.

Yeni bir mesaj gönderildiğinde, bu mesaj bölümün log'unun sonuna eklenir ve bir sonraki kullanılabilir offset ile etiketlenir.

İmmutability:


Bir mesaj log'a yazıldıktan sonra, o mesaj değiştirilemez (immutable). Bu, mesajın offset'inin de sabit kalacağı anlamına gelir.

Tüketici İzleme:


Tüketiciler, hangi mesajları okuduklarını offset'lerine göre takip eder.

Tüketici, bir sonraki okuması gereken mesajın offset'ini bilir ve bu bilgiyi kendi durum bilgisinde (genellikle Zookeeper veya Kafka'nın kendi içindeki __consumer_offsets topic'inde) saklar.

Ölçeklenebilirlik:


Kafka, her bir tüketiciye veya tüketici grubuna, okunacak son offset'i saklayarak ölçeklenebilirlik sağlar. Bu, çok sayıda tüketici aynı veri setini bağımsız olarak okuyabilir ve kendi okuma durumlarını yönetebilir.

Mesaj Yeniden İşleme ve Atlanması:


Tüketiciler, bir mesajı yeniden işlemek istediklerinde veya belirli bir mesajı atlamak istediklerinde offset'i kullanarak ileri veya geri gidebilirler.

Bu, hata durumlarını yönetme veya veri işleme sırasında esneklik sağlar.

Garanti Edilen Teslimat:


Offset mekanizması, Kafka'nın "en az bir kez teslim" garantisi sağlamasına yardımcı olur. Tüketici bir mesajı işlediğini ve bir sonraki offset'e geçmeye hazır olduğunu onaylamadan önce, mesajın işlenip işlenmediği tekrar kontrol edilebilir.

Dayanıklılık:


Kafka, offset bilgilerini disk üzerinde saklar. Bu, sistemin yeniden başlatılması veya bir hata durumunda dahi tüketici gruplarının kaldıkları yerden devam etmelerini sağlar.

Otomatik Offset Yönetimi:


Kafka 0.9 sürümünden itibaren, tüketiciler offset'lerini otomatik olarak yönetebilir. Bu, tüketicinin okuduğu son mesajın offset'ini otomatik olarak Kafka'nın kendisine kaydetmesi anlamına gelir.

Manuel Offset Kontrolü:


Tüketiciler, gelişmiş kullanım senaryolarında offset'leri manuel olarak kontrol edebilirler. Bu, daha fazla kontrol sağlar ve özel işleme lojikleri uygulamaya olanak tanır.

Tutarlılık ve İzlenebilirlik:


Offset'ler, mesaj işleme sürecinin tutarlı ve izlenebilir olmasını sağlar. Tüketicilerin işledikleri mesajları ve potansiyel hata durumlarını anlamalarına yardımcı olur.

Kafka'nın offset yapısı, güvenilir ve ölçeklenebilir bir mesajlaşma sistemi oluşturmak için kritik bir rol oynar


Manuel Offset Kontrolü tam olarak nasıl çalışır?


Apache Kafka'da manuel offset kontrolü, tüketici uygulamaların, Kafka'nın otomatik offset yönetim mekanizmalarına güvenmek yerine, kendi offset yönetimlerini yapmalarını sağlar. Bu, gelişmiş kullanım senaryolarında faydalı olabilir, örneğin, uygulama yalnızca belirli koşullar altında mesajları işlediği zaman veya mesajları işlemeden önce ek doğrulama adımları gerektiğinde.


İşte manuel offset kontrolünün nasıl çalıştığına dair adımlar:


Auto-Commit Devre Dışı Bırakma:


Tüketici uygulamasında otomatik offset commit özelliğini devre dışı bırakın. Kafka tüketicisi yapılandırmasında enable.auto.commit seçeneğini false olarak ayarlayarak bunu yapabilirsiniz.

Mesaj İşleme:


Tüketici, Kafka'dan mesajları alır ve uygulamanızın iş mantığına göre işler.

Offset Saklama:


Tüketici, işlediği mesajın offset'ini bir yerde saklar. Bu, genellikle uygulama tarafından yönetilen bir veritabanında, dosyada veya Kafka'nın kendisinde bir topic içinde olabilir.

Offset Taahhütü (Commit):


Tüketici, bir mesajı başarıyla işledikten sonra, ilgili offset'i Kafka'ya taahhüt eder (commit). Bu, consumer.commitSync() veya consumer.commitAsync() metotlarıyla yapılabilir.

Hata Yönetimi:


İşlenen mesajlarda bir hata olursa veya işleme başarısız olursa, tüketici daha önce taahhüt edilen offset'ten başlayarak mesajları tekrar okumaya başlayabilir. Böylece, mesajların kaybolmasını veya atlanmasını önleyebilir.

Geri Sarım (Replay):


Uygulama, işlenen bir mesajın sonuçlarından memnun değilse veya bir hata oluşursa, offset'i geri sarabilir ve işleme tekrar başlayabilir.

İşleme Garantisi:


Manuel offset kontrolü, "en az bir kez", "tam olarak bir kez" veya "en fazla bir kez" işleme garantilerinden herhangi birini sağlamak için özelleştirilebilir.

Manuel offset yönetimi, Kafka tüketici API'sinin karmaşık ancak güçlü özelliklerinden biridir ve uygulama geliştiricilere mesaj işleme davranışını tam olarak kontrol etme olanağı sunar. Ancak, bu yaklaşımın doğru ve dikkatli bir şekilde uygulanması gerekir çünkü mesajların işlenmesi ve offset yönetimi konusunda tam bir sorumluluk gerektirir. Yanlış yönetilen offset'ler, mesajların tekrar işlenmesine veya kaybolmasına neden olabilir.


Otomatik Offset Kontrolü tam olarak nasıl çalışır?


Apache Kafka'da otomatik offset kontrolü, Kafka tüketicisinin okuduğu mesajların offset'lerini otomatik olarak yönettiği bir işlemdir. Bu, tüketicilerin işledikleri her bir mesaj için offset'i manuel olarak commit etmelerine gerek kalmadan, işlemi Kafka'ya bıraktıkları anlamına gelir.


İşte otomatik offset kontrolünün nasıl çalıştığına dair bir açıklama:


Yapılandırma Ayarı:


Kafka tüketici istemcisinde, enable.auto.commit yapılandırma seçeneğini true olarak ayarlayarak otomatik offset taahhüdünü etkinleştirirsiniz. Bu seçenek varsayılan olarak etkindir.

Taahhüt Aralığı:


Otomatik commit interval'ı auto.commit.interval.ms yapılandırma parametresi ile belirlenir. Bu, Kafka'nın okunan offset'leri ne sıklıkta otomatik olarak commit edeceğini belirler.

Aralıklı Commit:


Belirlenen aralıklarla, Kafka tüketici istemcisi, son okuduğu offset'i otomatik olarak commit eder. Bu işlem, mesajları işleme kodunuzun dışında, arka planda çalışır.

İşleme Durumunun Takibi:


Tüketici, mesajları işlemeye devam eder ve offset'lerin düzenli olarak commit edildiğinden endişelenmez. Eğer uygulama çökerse veya yeniden başlatılırsa, tüketici en son commit edilmiş offset'ten mesaj okumaya devam edebilir.

Hata Durumları:


Otomatik commit kullanılırken, bir mesaj işlenirken bir hata oluşursa ve uygulama hemen çökmezse, bu mesaj yeniden işlenemeyebilir çünkü offset zaten commit edilmiş olabilir. Bu, "en az bir kez" işleme garantisi sağlar ancak "tam olarak bir kez" garantisini sağlamaz.

Otomatik Yeniden Deneme:


Kafka, işlenen mesajlar için otomatik olarak yeniden deneme mekanizması sağlar. Bir mesaj başarısız olursa, tüketici otomatik olarak yeniden deneyebilir, bu da işlem sırasında kısa süreli hataları tolere etmeye yardımcı olur.

Kolaylık ve Basitlik:


Otomatik offset yönetimi, özellikle basit tüketici uygulamaları için kullanışlıdır çünkü mesaj işleme mantığına odaklanmanıza olanak tanır ve offset'leri manuel olarak yönetme karmaşıklığını ortadan kaldırır.

Otomatik offset kontrolü, genel kullanım için kolaylık sağlasa da, işleme sırasında kesin kontrol ve garanti edilmiş mesaj işleme davranışları gerektiren durumlarda manuel offset kontrolü tercih edilir. Özellikle, mesajların işlenmesi sırasında kesin bir konsistensi gerektiren uygulamalarda, otomatik offset kontrolü yeterli olmayabilir ve geliştiricilerin manuel kontrolü kullanmaları önerilir.



Apache Kafka'daki grup yapısı, tüketicilerin daha etkili bir şekilde mesajları işlemelerini sağlamak için kullanılan bir yapıdır. Bu grup yapısı, birden fazla tüketiciyi aynı veri akışını işlemek için koordine etmeye ve veriyi paralel olarak işlemeye olanak tanır. Kafka'daki grup yapısı ve nasıl çalıştığı aşağıda açıklanmıştır:


Kafka Tüketici Grubu Nedir?


Kafka'da tüketici grupları, aynı konu (topic) veya konu bölümü (topic partition) üzerinde çalışan birden fazla tüketici uygulamasının bir araya geldiği bir yapıdır. Bu gruplar, veri işleme yükünü paylaşarak işlemi paralel hale getirmeye yardımcı olur.

Tüketici Gruplarının Avantajları:


Paralel İşleme: Tüketici grupları, veri akışını paralel olarak işleyebilir, bu da veriyi daha hızlı işlemeyi ve ölçeklemeyi mümkün kılar.

Yüksek Erişilebilirlik: Bir tüketici grubunda bir tüketici uygulaması çökerse, diğerleri çalışmaya devam edebilir, böylece kesintisiz veri işlemesi sağlanır.

Konu Bölümü Atama (Topic Partition Assignment): Kafka, konu bölümlerini tüketici grupları arasında otomatik olarak paylaştırır, böylece tüketici uygulamaları veriyi eşit olarak işler.

Ölçeklenebilirlik: Yeni tüketici uygulamaları eklemek, veri işleme kapasitesini artırmak için kolaydır.

Tüketici Grubu Çalışma Mekanizması:


Tüketici Grubunun Oluşturulması: Bir tüketici grubu oluşturulurken, grup bir ad ve grup kimliği (group id) ile tanımlanır. Bu kimlik, Kafka'ya ait bir konfigürasyon olarak saklanır.


Konu Bölümlerinin Atanması: Tüketici grubu oluşturulduğunda, Kafka tarafından otomatik olarak konu bölümleri (topic partitions) grup üyelerine atanır. Bu atama, tüketici grubu üyeleri arasında adil bir şekilde yapılır ve her bir grup üyesi belirli bölümleri işlemekle sorumludur.


Veri İşleme: Her grup üyesi, kendisine atanan konu bölümlerini okur ve veriyi işler. Bu işlem sırasında mesajlar offset'leri ile işaretlenir ve bu offset'ler grup içinde saklanır.


Offset Yönetimi: Tüketici grubu üyeleri, okudukları mesajların offset'lerini düzenli aralıklarla veya otomatik olarak Kafka'ya taahhüt ederler (commit). Bu taahhüt, tüketici grubunun kaldığı yerin takip edilmesini sağlar.


Grup Koordinasyonu: Tüketici grubu, grup içi koordinasyon için bir grup koordinasyon hizmeti (group coordinator) kullanır. Bu hizmet, grup üyeleri arasındaki iletişimi ve konu bölümü atamalarını yönetir.


Yüksek Erişilebilirlik: Kafka, grup koordinasyon hizmetini yönetmek için birden fazla broker'da yedekleme olarak çalıştırabilir, böylece yüksek erişilebilirlik sağlar.


Grup Yönetimi: Grup içindeki üyelerin katılması, ayrılması ve çökmesi gibi grup yönetimi işlemleri Kafka tarafından otomatik olarak ele alınır.


Tüketici grupları, Kafka'nın ölçeklenebilir ve güvenilir bir mesajlaşma platformu olarak kullanılmasını kolaylaştırır ve büyük veri akışlarını etkili bir şekilde işlemek için güçlü bir araçtır.

Apache Kafka interview soruları ve cevapları




ChatGPT


Apache Kafka, büyük veri setlerini işlemek ve analiz etmek için kullanılan açık kaynaklı bir akış işleme platformudur. Bir Kafka röportajında aşağıdaki gibi sorularla karşılaşabilirsiniz

Apache Kafka nedir?


Apache Kafka, büyük miktarda gerçek zamanlı veriyi işlemek ve yayınlamak için kullanılan, hızlı, ölçeklenebilir, dayanıklı ve hata toleranslı bir yayın-abone mesajlaşma sistemidir. Kafka, LinkedIn tarafından geliştirildi ve 2011 yılında açık kaynak olarak yayınlandı.


Kafka'nın temel bileşenleri nelerdir?


Kafka'nın temel bileşenleri arasında Producer (üretici), Consumer (tüketici), Broker (aracı) ve Topic (konu) bulunur. Producer veriyi Topic'e yazar, Consumer ise bu Topic'den veriyi okur. Broker, verinin güvenli bir şekilde depolanmasını ve iletilmesini sağlar.


Apache Kafka'nın hangi özellikleri onu diğer mesajlaşma sistemlerinden ayırır?


Kafka, ölçeklenebilirlik, hızlı veri akışı, veri replikasyonu ve hata toleransı gibi özellikleri sayesinde diğer mesajlaşma sistemlerinden farklılaşır. Ayrıca, Kafka verinin uzun süreli saklanmasına imkan tanır, bu da geçmiş verilere dayalı analizler yapmayı mümkün kıter.


Kafka Topic nedir?


Topic, Kafka'da mesajların saklandığı kategorilerdir. Producer'lar veriyi belirli bir Topic'e yazarlar ve Consumer'lar bu Topic'den veriyi okurlar. Bir Topic, bir veya daha fazla Partition'a (bölüm) bölünebilir.


Kafka'da Partition nedir ve neden önemlidir?


Kafka'da bir Topic, birden fazla Partition'a bölünebilir. Bu bölümler, büyük veri yüklerinin daha küçük parçalara bölünerek işlenmesini sağlar. Bu, yüksek miktarda veriyi daha hızlı ve etkili bir şekilde işlemeyi ve ölçeklemeyi mümkün kılar.


Kafka'da Consumer ve Consumer Group nedir?


Kafka'da Consumer, Topic'den mesajları okuyan uygulamadır. Birden çok Consumer, Consumer Group oluşturabilir. Her Consumer, belirli bir Consumer Group'a aittir ve Group içindeki her Consumer, Topic'in farklı bir Partition'ından veri okur. Bu, veri işleme hızını artırır ve hata durumunda başka bir Consumer'ın işi devralmasını sağlar.


Kafka'da Replication nedir ve neden önemlidir?

Replication, Kafka'daki veri kaybını önleme mekanizmasıdır. Bir T opic'in her bir Partition'ı, birden çok Kafka Broker'ına kopyalanabilir. Bu kopyalar, Replica olarak adlandırılır. Eğer bir Broker çökerse, veri kaybını önlemek için diğer Broker'lar Replica'ları kullanabilir.


Kafka'da Offset nedir?


Offset, Kafka'daki her bir mesajın Partition içerisindeki benzersiz kimliğidir. Bu, Consumer'ların hangi mesajları okuduklarını ve hangi mesajın bir sonraki okuma için beklediğini belirler.


Kafka'da Zookeeper'ın rolü nedir?


Zookeeper, Kafka'nın çalışması için gereklidir. Kafka Cluster'ının durumunu yönetir, Broker'ları koordine eder ve Consumer'ların Offset'lerini saklar. Zookeeper olmadan Kafka, mevcut durumu veya senkronizasyonunu kaybedebilir.


Kafka'da "log compaction" ne anlama gelir?

Log compaction, Kafka'nın disk alanını yönetme stratejilerinden biridir. Bu strateji, belirli bir konu için tutulan tüm mesajların bir özetini korur ve aynı anahtara sahip eski mesajları siler. Bu, veri bütünlüğünü korurken disk kullanımını azaltır.


Apache Kafka ile hangi tür veri işleme modelleri desteklenir?

Kafka, hem gerçek zamanlı veri işleme modelini (low-latency) hem de batch işleme modelini (high-throughput) destekler.


Kafka Streams nedir?

Kafka Streams, gerçek zamanlı veri işleme ve analiz için bir Java kütüphanesidir. Kafka Streams API, basit ve karmaşık veri işleme işlemlerini, ölçeklenebilir ve hata tolere bir şekilde yapmayı sağlar.


Kafka Connect nedir?

Kafka Connect, Kafka ile diğer veri sistemleri arasında veri akışını otomatikleştirmek için kullanılan bir API'dir. Bu, Kafka'ya veri göndermek veya Kafka'dan veri almak için kullanılır. Kafka Connect, büyük ölçekli ve gerçek zamanlı veri taşıma işlemlerini kolaylaştırır.


Kafka'da 'retention period' ne anlama gelir?

Retention period, Kafka'da bir mesajın ne kadar süreyle saklanacağını belirler. Bu süre dolduğunda, mesaj otomatik olarak silinir. Retention period, her bir Topic için ayrı ayrı belirlenebilir.


Kafka'da 'ISR' nedir ve niçin önemlidir?

    ISR (In-Sync Replicas), Kafka Broker'ında tutulan ve bir Partition'ın tüm yazma işlemlerini başarıyla tamamlamış olan replika setini ifade eder. ISR, veri kaybı riskini azaltmak ve verinin bütünlüğünü sağlamak için önemlidir.Apache 


Kafka'da 'at least once' ve 'exactly once' teslimat semantikleri nedir?

'At least once' semantiği, her mesajın en az bir kez işleneceğini garanti eder. Ancak, bazı durumlarda mesajların çoğaltılması söz konusu olabilir.

'Exactly once' semantiği ise her mesajın tam olarak bir kez işleneceğini garanti eder. Bu, daha karmaşık bir süreç gerektirir ve Kafka 0.11.0.0 versiyonundan itibaren bu semantiği destekler.


Kafka ve RabbitMQ arasındaki fark nedir?

Her ikisi de mesajlaşma sistemleridir ancak farklı kullanım durumlarına hizmet ederler. Kafka, büyük veri akışlarını işlemek ve analiz etmek için tasarlanmıştır ve büyük ölçekli, yüksek hacimli, yüksek hızlı veri akışlarını yönetebilir. Öte yandan, RabbitMQ daha geleneksel bir mesajlaşma sistemi olup, daha düşük hacimli ve daha karmaşık işleme senaryolarında kullanılabilir.


Kafka'da leader ve follower nedir?

Bir Kafka Topic'in her bir Partition'ının, bir Broker üzerinde bir 'leader'’kopyası ve bir veya daha fazla 'follower' kopyası bulunur. Tüm yazma ve okuma işlemleri 'leader' üzerinden gerçekleşirken, 'follower'lar 'leader'ı takip eder ve veri replikasyonunu sağlar. Eğer 'leader' çökerse, bir 'follower' 'leader' rolünü devralır. Bu, Kafka'nın hata toleransını sağlar.


Kafka'da 'backpressure' nedir ve nasıl yönetilir?

Backpressure, Consumer'ların Producer'ların ürettiği veriyi yeterince hızlı bir şekilde işleyememesi durumunda oluşan bir durumdur. Kafka'da, Consumer'lar kendi hızlarında veri çekebilirler, bu da backpressure sorununu hafifletir. Ancak, eğer Consumer'lar yavaşlar ve veri birikirse, bu durum disk alanı sorunlarına ve veri kaybına yol açabilir. Bu durumları yönetmek için, Kafka'da ayarlanabilir bir 'retention policy' ve 'log compaction' özelliği vardır.



Kafka'nın 'pull-based' modeli ne anlama gelir ve bu modelin avantajları nelerdir?

Kafka'da Consumer'lar, kendi hızlarında veri çekebilirler. Bu, 'pull-based' model olarak adlandırılır. Bu modelin avantajı, Consumer'ların veri akışını kendi işleme kapasitelerine göre düzenleyebilmeleridir. Yani, bir Consumer aşırı yüklenmişse, daha az veri çekebilir. Bu, backpressure sorununu önler ve daha iyi ölçeklenebilirlik sağlar.


Kafka'da 'stream processing' ne anlama gelir?

Stream processing, Kafka'nın gerçek zamanlı veri işleme yeteneğini ifade eder. Kafka, büyük veri akışlarını hızlı bir şekilde işlemek ve analiz etmek için tasarlanmıştır. Kafka Streams API, bu işlemleri gerçekleştirmek için kullanılabilir. Bu API, filtreleme, dönüştürme, toplama ve birleştirme gibi birçok işlemi destekler.


Kafka'nın hangi kullanım senaryoları vardır?

Kafka, gerçek zamanlı analiz, log dosyası işleme, ölçüm verileri izleme, aktivite izleme, web sitesi aktivite izleme, fraud detection, real-time recommendation ve benzeri birçok senaryoda kullanılabilir. Ayrıca, Kafka, büyük veri ekosisteminin bir parçası olarak Hadoop, Spark ve diğer veri işleme ve analiz araçlarıyla entegre edilebilir.


Kafka'da 'Message' ve 'Record' terimlerinin anlamları nedir?

Kafka'da 'Message' ve 'Record' terimleri genellikle birbirinin yerine kullanılır ve her ikisi de yayınlanan ve tüketilen veri birimlerini ifade eder. Kafka 0.11.0.0'dan itibaren resmi olarak 'Record' terimini kullanmayı tercih etmiştir. Bir 'Record', bir 'key' (anahtar) ve bir 'value' (değer) ile birlikte bir 'timestamp' (zaman damgası) içerir.


Kafka'da 'Consumer lag' nedir?

'Consumer lag', Kafka'da bir Consumer'ın ne kadar geride olduğunu belirler. Spesifik olarak, Consumer'ın en son okuduğu offset ile Topic'in en son offset'i arasındaki farkı ifade eder. Consumer lag, bir uygulamanın performansını değerlendirmek için kullanılır. Eğer lag sürekli olarak artıyorsa, bu Consumer'ın veriyi yeterince hızlı işleyemediği anlamına gelir.


Apache Kafka ve Apache Storm arasındaki fark nedir?

Apache Kafka ve Apache Storm, her ikisi de büyük veri işleme için kullanılan araçlardır, ancak farklı özelliklere sahiptirler. Kafka, büyük miktarda verinin güvenli ve hızlı bir şekilde akışını sağlayan bir mesajlaşma sistemidir. Öte yandan, Storm, gerçek zamanlı veri işleme ve dağıtılmış RPC (Remote Procedure Call) için kullanılan bir hesaplama çerçevesidir.


Kafka'nın 'fault-tolerance' özelliği nedir ve nasıl çalışır?

Kafka, hata toleransı (fault-tolerance) özelliği sayesinde, sistemdeki bir veya daha fazla bileşenin çökmesi durumunda bile veri kaybını önler ve hizmetlerin kesintisiz bir şekilde çalışmasını sağlar. Bu, verinin birden çok Broker üzerinde replike edilmesi ile sağlanır. Eğer bir Broker çökerse, diğer Broker'lar veriyi sağlamaya devam eder.


Apache Kafka'da 'serialization' ve 'deserialization' nedir?

Serialization, bir veri nesnesini ağ üzerinden iletim veya diske yazma için binary formata dönüştürme işlemidir. Deserialization ise bu binary formatı orijinal veri formatına geri dönüştürme işlemidir. Kafka, verinin Producer'dan Broker'a ve Broker'dan Consumer'a taşınması sırasında bu işlemleri gerçekleştirir.


Kafka'da idempotent producer nedir ve neden önemlidir?

Bu özellik, ağ hataları veya diğer nedenlerle mesajların tekrar gönderilmesi durumunda veri bütünlüğünü korumak için önemlidir. Kafka 0.11.0'dan itibaren idempotent producer özelliğini sunmaktadır.


Kafka'da Partition'ların rolü nedir?

Partition'lar, Kafka'da veri paralelizmini sağlar. Bir Topic, bir veya daha fazla Partition'a bölünebilir ve her bir Partition, bir dizi sıralı ve sabit boyutlu kaydı tutar. Partition'lar sayesinde, veri birden çok Broker arasında dağıtılabilir ve paralel olarak işlenebilir.


Kafka'da Broker nedir?

Broker, Kafka'da bir sunucu olarak hizmet verir ve veriyi depolar. Bir Kafka Cluster'ı, birden çok Broker'ı içerir ve her bir Broker, bir veya daha fazla Partition'ı barındırabilir. Broker'lar, verinin replikasyonunu ve hata toleransını sağlar.


Kafka'da 'Producer Acknowledgement' nedir?

Producer Acknowledgement, bir Producer'ın bir mesajı gönderdikten sonra bir Broker'dan aldığı onaydır. Bu, mesajın başarıyla alındığını ve depolandığını doğrular. Kafka'da, bu onayın seviyesi yapılandırılabilir. Mesela, 'acks=0' hiçbir onayın alınmayacağı, 'acks=1' sadece leader'ın onayının alınacağı ve 'acks=all' tüm replikaların onayının alınacağı anlamına gelir.


Kafka'da 'throughput' nedir ve nasıl optimize edilir?

Throughput, bir zaman biriminde işlenen veri miktarını ifade eder. Kafka, yüksek throughput kapasitesi sunar, yani büyük veri akışlarını hızlı bir şekilde işleyebilir. Throughput, disk I/O, ağ kapasitesi, mesaj boyutu ve sistem kaynakları gibi birçok faktöre bağlıdır. Optimum throughput için, bu faktörler dikkate alınarak sistemöyapılandırılmalı ve düzenli olarak izlenmeli ve ayarlanmalıdır.


Kafka'da 'log compaction' nedir?

Log compaction, Kafka'da bir tür veri tutma politikasıdır. Bu politika, her bir key için en son değerin korunduğu, daha eski değerlerin zamanla temizlendiği bir log oluşturur. Bu, Kafka Topic'lerinde bir tür 'snapshot' oluşturur ve büyük miktarda verinin etkili bir şekilde yönetilmesini sağlar.


Kafka'da 'offset' nedir?

Offset, Kafka'da her bir mesajın Partition içindeki sırasını belirleyen bir numaradır. Offsetler, Consumer'ların veri okuma konumlarını takip etmesine ve istedikleri bir noktadan veri okumalarına yardımcı olur.



Kafka'da 'replication factor' nedir ve niçin önemlidir?

Replication factor, Kafka'da bir Topic'in her bir Partition'ının kaç kopyasının tutulacağını belirler. Bu,verinin replikasyonunu ve Kafka'nın hata toleransını sağlar. Eğer bir Broker çökerse, diğer Broker'lar veriyi sağlamaya devam eder.


Kafka Stream'ler nedir?

Kafka Streams, Kafka'nın bir kütüphanesidir ve gerçek zamanlı veri akışlarını işleme yeteneği sağlar. Kafka Streams, stream processing işlemlerini gerçekleştirebilmek için Kafka Consumer ve Producer API'lerini kullanır.


Kafka'da 'zookeeper'ın rolü nedir?

Zookeeper, Kafka Cluster'ının koordinasyonunu sağlar. Broker'lar ve Consumer'lar arasındaki iletişimi, Topickonfigürasyonlarını, Consumer grup bilgilerini yönetir. Eğer bir Broker çökerse, Zookeeper bunu algılar ve diğer Broker'lara bildirir. Kafka 2.8.0 ve sonrası versiyonlarında, Zookeeper olmadan da çalışabilen bir mod sunulmuştur.


Kafka'nın hangi durumlarda kullanılmaması gerektiği söylenebilir?al

Kafka, düşük gecikme süresi gerektiren durumlarda (örneğin, çok hızlı veri işleme veya gerçek zamanlı işlemler için) veya çok karmaşık işlem gerektiren durumlarda (örneğin, karmaşık işlem kuyrukları veya öncelikli iletiler için) Kafka ideal olmayabilir. Ayrıca, verinin sıklıkla güncellendiği senaryolarda (örneğin, bir veritabanında olduğu gibi) Kafka yerine daha geleneksel bir veritabanı daha uygun olabilir.


Kafka'nın avantajları ve dezavantajları nelerdir?

Kafka'nın avantajları:

  • Yüksek throughput: Kafka, yüksek hacimli veri akışlarını yönetme yeteneği ile bilinir.
  • Hata toleransı: Kafka, verinin birden çok Broker üzerinde replike edilmesi ile hata toleransını sağlar.
  • Ölçeklenebilirlik: Kafka, büyük miktarda veriyi yönetmek için kolayca ölçeklendirilebilir.
  • Gerçek zamanlı işleme: Kafka, veriyi gerçek zamanlı olarak işleme yeteneği sunar.

Kafka'nın dezavantajları:

  • Karmaşıklık: Kafka'nın öğrenilmesi ve yönetilmesi zaman alabilir ve karmaşık olabilir.
  • Düşük gecikme: Kafka, yüksek hacimli veri akışları için tasarlanmıştır ve bu nedenle düşük gecikme süresi gerektiren uygulamalar için ideal olmayabilir.
  • Veri güncellemeleri: Kafka, veriyi bir kere yazıp çok kez okuma modelini kullanır ve bu nedenle sıklıkla güncellenen veri için ideal değildir.
  1. Apache Kafka'nın 'at least once', 'at most once' ve 'exactly once' teslim garantileri nelerdir?
  • 'At least once': Bu garanti, mesajların kesinlikle bir kez veya daha fazla kez teslim edileceğini belirtir. Bu durumda, mesaj kayıplarını önlemek önemlidir, ancak mesajların tekrar işlenmesi durumu olabilir.
  • 'At most once': Bu garanti, mesajların en fazla bir kez veya hiç teslim edilmeyeceğini belirtir. Bu durumda, tekrar işlenen mesajlar önlenir ancak mesaj kaybı riski olabilir.
  • 'Exactly once': Bu en güçlü garanti, her mesajın tam olarak bir kez teslim edileceğini belirtir. Bu durumda, hem mesaj kaybı hem de tekrar işlenen mesajlar önlenir. Kafka 0.11 sürümünden itibaren 'exactly once' teslimatını desteklemektedir. Ancak bu, performansı etkileyebilir ve dikkatli bir şekilde yapılandırılması gereklidir.

Apache Kafka for Developers using Spring Boot Eğitimi - Udemy - İngilizce

Kursa buradan ulaşabilirsiniz.





What you'll learn
Apache Kafka and its Internals

Build Enterprise Standard Kafka Client Applications using Spring Boot

Writing Unit Tests using JUnit

Writing Integration tests using JUnit and Embedded Kafka

Build End to End application using Kafka Producer/Consumer and Spring Boot



Requirements
Java 11 or greater is required

Intellij or Eclipse or Similar IDE

Knowledge about Spring Boot

Experience writing tests using JUnit

Gradle or Maven Knowledge is needed

Description


This course is structured to give you a theoretical and coding experience with Apache Kafka using SpringBoot. This course is targeted for developers who would like to build enterprise standard Kafka Client applications using SpringBoot.

If you are looking forward to learning the below-listed things:

Use cases where Kafka fits really well


Internals of Kafka and how it works


Built Enterprise Standard Kafka Client Applications using Producer/Consumer API using Spring Boot


Unit/Integration Tests for the Kafka Client Applications

Then this is the right course for you. This is a pure hands-on oriented course where you will be learning the concepts through code.

By the end of this course, you will have a complete understanding of coding and implementing Kafka Clients using SpringBoot with Producer/Consumer API.

Getting Started with Kafka

In this section, I will give you all a quick introduction to Apache Kafka, terminologies and different client APIs that are part of Kafka

Download and Install Kafka

In this section, we will download the Kafka distribution from the Kafka Website.

Understanding Kafka Components and its Internals - (Theory + Hands-On)

In this section, we will explore the Kafka internals from a theoretical perspective followed by hands-on exploring the Kafka internals.

Learn about the Topics and Partitions in Kafka


Setup a Local Kafka Cluster with Multiple Brokers


Producer/Consumer messages in the Kafka Cluster


Learn about Consumer Offsets and Consumer Groups


Commit Log and Retention Policy


Learn about Kafka Load Distribution and Fault Tolerance and Robustness

Application OverView

This section covers the application that we are going to build as part of this course.

Build SpringBoot Kafka Producer - Hands-On

In this section, we will learn about building a Kafka Producer using Spring Boot.

Build RestAPI through which the events can be posted into the application from the outside world


Explore KafkaTemplate to publish the data into the Kafka Topic


Learn different approaches to produce the message into the Kafka


Learn to publish the Kafka Record using Headers

Integration Testing using JUnit5 - Hands-On

In this section, we will learn about different approaches to writing Integration tests using Embedded Kafka.

Write Integration test cases to interact with the API using JUnit5


Write Integration test cases to interact with Embedded Kafka using JUnit5

Unit Testing using JUnit5- Hands-On

In this section, we will learn about different approaches to writing unit tests Kafka Producer.

Write Unit Tests to the controller layer using @WebMVC annotation and MockMVC


Add the validations to the request payload in the endpoint


Write Custom Error Handler for different response codes

Kafka Producer - Sending Message With Key - Hands-On

In this section, we will learn about sending the record to Kafka Topic with Key.

Kafka Producer - Important Configurations

In this section, we will learn about different key configurations to consider when it comes to reliable message delivery to Kafka

Build SpringBoot Kafka Consumer - Hands-On

In this section, we will learn about building a Kafka Consumer using Spring Boot.

Set up the base consumer project library-events consumer


Learn about different Spring Kafka Terminologies which are necessary to configure a Kafka Consumer


Learn about how to configure a Kafka Consumer using the @KafkListener Annotation


Learn about how "Spring Boot Auto Configuration works behind the scenes for Kafka Consumer"

Consumer Groups and Consumer Offset Management- Hands-On

In this section, we will code and learn about consumer groups and offset management.

Demonstration how Consumer Groups plays a vital role when it comes to scalable message consumption and consumer rebalance


Learn about the Default consumer offset management by Kafka


Learn about how consumer offset can be manually managed from the application


Demonstration of how to achieve scalable message consumption by increasing the concurrency level to greater than 1

Persisting Library Events in DB - Using H2 InMemory DataBase

In this section, we will code and learn about integrating the DB layer into the library-events-consumer using Spring JPA.

Configuring the H2 In-Memory DB


Create LibraryEvent and Book Entity


Build Service Layer to process LibraryEvent - ADD Event Type


Build Service Layer to process LibraryEvent - MODIFY Event Type

Integration Testing using Embedded Kafka - Kafka Consumer

In this section, we will code and learn to write the Integration tests for the Kafka Consumer.

Configure Embedded Kafka for Integration Tests


Write the Integration test for posting a "NEW" LibraryEvent


Write the Integration test for posting an "UPDATE" LibraryEvent


Integration Tests for Real Databases using TestContainers

Error Handling, Retry and Recovery - Kafka Consumers

In this section, we will learn about the different error handling techniques that are available for Kafka Consumer.

Custom Error Handler


Retry in Kafka Consumer


Retry SpecificExceptions using Custom RetryPolicy


Recovery in Kafka Consumer


Handling Recovery in Kafka Consumer

Error Handling, Retry/Recovery - Kafka Producer

Error Handling in Kafka Producer


Retry in Kafka Producer - Broker Not Available


Retry in Kafka Producer - Min.in.sync.replicas


Retain/Recover Failed Records in Kafka Producer

By the end of this you will have a complete understand and knowledge of building enterprise standard Kafka Consumers and Producers using Spring Boot with the Unit and Integration tests using EmbeddedKafka.

Who this course is for:Java/Spring Developers who would like to build Producers/Consumers using Apache Kafka
Anyone willing to learn about Apache Kafka and implement using SpringBoot


Apache Kafka - Apache Spark - Twitter Streaming Uygulaması

Apache Kafka - Apache Spark ile Twitter Streaming Uygulamasına aşağıdaki adresten ulaşabilirsiniz.

https://github.com/aliturgutbozkurt/kafka-spark-twitter-streaming




Rastgele İçerik

© tüm hakları saklıdır
made with by templateszoo