Örnek sorular
St Streaming Joins TablesZorluk 1
Apache Kafka Streams 4.1'de bir KStream neyi temsil eder?
- aUygulama başlarken bir kez yüklenen, sınırlı, çevrimdışı bir veri kümesi
- bAynı key için yeni bir kaydın önceki değeri üzerine yazdığı bir changelog
- cHer application instance'ının tuttuğu, bir topic'in tam kopyalanmış anlık görüntüsü
- dHer biri yeni bir olay olarak ele alınan, sınırsız, bağımsız kayıtlar dizisi✓
Açıklama:KStream, topic'i bir kayıt akışı olarak modeller: gelen her kayıt, key'inden bağımsız olarak ayrı ve bağımsız bir olaydır — aynı key için bir kaydın diğerinin yerine geçmesi diye bir şey yoktur. Bu, KStream'in değil KTable/GlobalKTable'ın yorumudur.
St Streaming Joins TablesZorluk 1
Apache Kafka Streams 4.1'de bir KTable neyi temsil eder?
- aHer biri yeni bir olay olarak ele alınan, sınırsız, bağımsız kayıtlar dizisi
- bYalnızca başlangıçta bir kez doldurulan, sonradan dokunulmayan salt-okunur bellek-içi cache
- cYeni bir kaydın bir key'in güncel değerini güncellediği, null'ın ise sildiği bir changelog✓
- dHer application instance'ının yerelde materialize ettiği, bir topic'in tam kopyası
Açıklama:KTable, altındaki topic'i bir changelog olarak yorumlar: her kayıt kendi key'i için bir upsert'tir (son değer kazanır), null değerli bir kayıt ise o key'i kaldıran bir tombstone olarak davranır. d şıkkı KTable'ı değil GlobalKTable'ı tarif eder.
St Streaming Joins TablesZorluk 2
Apache Kafka Streams 4.1'de bir GlobalKTable'ı sıradan bir KTable'dan ayıran nedir?
- aHer instance, atanan partition'lar yerine topic'in tamamını yerelde materialize eder✓
- bBir GlobalKTable yalnızca başka bir GlobalKTable ile join edilebilir, bir KStream ile edilemez
- cBir GlobalKTable, uygulama başladıktan sonra güncelleme almayı bırakır
- dBir GlobalKTable verisini yalnızca bellekte tutar ve bir changelog'a kalıcı hale getirmez
Açıklama:Sıradan bir KTable'ın state'i, topolojinin geri kalanı gibi partitionlanmıştır — her instance yalnızca kendisine atanan partition'ları tutar. Bir GlobalKTable'ın topic'i ise her instance tarafından tamamen tüketilir, yani her biri tablonun eksiksiz bir yerel kopyasını tutar.
St Streaming Joins TablesZorluk 1
Apache Kafka Streams 4.1'de bir state store'un changelog topic'inin temel amacı nedir?
- aDownstream tüketici uygulamalarının store'un güncel state'ini doğrudan okuyabilmesini sağlamak
- bYerel state store'u, bir çökme sonrası geri yüklenebilmesi için kalıcı olarak desteklemek✓
- cStore için hangi consumer group offset'lerinin commit edildiğini kaydetmek
- dStore'a karşı yapılan her interactive query'yi denetim amacıyla loglamak
Açıklama:Kalıcı bir state store'a uygulanan her değişiklik, aynı zamanda changelog topic'ine de yazılır. Bir task yeni bir instance'a taşındığında ya da bir hatanın ardından yeniden başladığında, Kafka Streams işlemeye devam etmeden önce store'un içeriğini yeniden kurmak için bu changelog'u replay eder.
St Streaming Joins TablesZorluk 2
Apache Kafka Streams 4.1, windowed olmayan bir state store'un changelog topic'inde hangi cleanup policy'yi ayarlar?
- a
cleanup.policy=delete, böylece eski kayıtlar bir retention süresinin ardından silinir - b
cleanup.policy=compact,delete, sabit 24 saatlik bir retention ile birlikte - cHerhangi bir cleanup policy yok; topic sınırsız büyür
- d
cleanup.policy=compact, böylece key başına yalnızca en son kayıt tutulur✓
Açıklama:Windowed olmayan bir store'un changelog'u, store'un key-value içeriğini birebir yansıtır, bu yüzden Kafka Streams onu log compaction'a ayarlar — Kafka key başına yalnızca en son kaydı tutar, ki bu tam olarak store'un güncel state'ini geri yüklemek için gereken şeydir.
St Streaming Joins TablesZorluk 2
Apache Kafka Streams 4.1'de, bir join ya da aggregation'dan önce bazen otomatik olarak bir repartition topic neden oluşturulur?
- aKaynak topic'in çok fazla partition'ı olduğunda partition sayısını azaltmak için
- bFelaket kurtarma amacıyla kaynak topic'in bir yedek kopyasını oluşturmak için
- cYeniden key'lenen kayıtları doğru partition'a taşımak için✓
- dBir sink'e yazmadan önce bir KTable'ı tekrar KStream'e dönüştürmek için
Açıklama:Join ve aggregation işlemleri, kayıtların key'e göre co-partitioned olmasını gerektirir. Upstream'deki bir işlem key'i değiştirirse, Kafka Streams veriyi yeni key'e uyan partition'a yeniden dağıtmak için dahili bir repartition topic ekler.