Zephyrnet Logosu

Kafka Temelleri: Kafka Tüketici Grubuna Giriş ve Nasıl Kullanılabilir?

Tarih:

Apaçi Kafka nedir?

Görüntü kredi: Unsplash

Apache Kafka, gerçek zamanlı veri girişi ve işleme için tasarlanmış dağıtılmış bir veri deposudur. Akış verileri, genellikle aynı anda veri kayıtları gönderen yüzlerce veri kaynağı tarafından sürekli olarak oluşturulan verilerdir. Bir akış platformu, sürekli veri akışıyla başa çıkabilmeli ve onu sıralı ve kademeli bir şekilde işleyebilmelidir.

Kullanıcılar Kafka'yı üç farklı amaç için kullanabilir:

Kayıt akışları yayınlanır ve bunlara abone olunur.
Kayıt akışları, oluşturuldukları sırayla saklanmalıdır.
Veri akışlarının gerçek zamanlı işlenmesi
Kafka, en yaygın olarak, gerçek zamanlı akış veri ardışık düzenleri ve veri akışlarına uyum sağlayan uygulamalar oluşturmak için kullanılır. Hem geçmiş hem de gerçek zamanlı veri depolama ve analiz sağlamak için iletişimi, depolamayı ve akış işlemeyi karıştırır.

Tüketici grubu

A Kafka tüketicisi grup, belirli bir konuda bilgi tüketmek için birlikte çalışan bir grup insandır. Grubun tüketicileri, temaların her biri için bölümlere ayrılmıştır. Gruba yeni üyeler katıldıkça ve eskiler ayrıldıkça, bölümler yeniden atanır, böylece her üye bölümlerden orantılı bir pay alır. Grubu yeniden dengelemek buna denir.

Eski "üst düzey" tüketici ile yeni tüketici arasındaki temel fark, ilkinin grup yönetimi için ZooKeeper'a, ikincisinin ise Kafka tarafından oluşturulmuş bir grup protokolüne dayanmasıdır. Aracılardan biri bu protokolde grubun koordinatörü olarak atanır ve grup üyelerini ve bölüm atamalarını yönetmekten sorumludur.

Her grubun koordinatörü, taahhüt edilen denkleştirmeleri depolayan iç denkleştirme konusu __tüketici denkleştirmelerinin liderleri arasından seçilir. Özünde, grubun kimliği konunun bölümlerinden birine hash edilir ve bu bölümün lideri koordinatör olarak seçilir. Sonuç olarak, tüketici grubu yönetimi kümedeki tüm aracılar arasında oldukça eşit bir şekilde dağıtılır ve aracıların sayısı arttıkça grup sayısının da artmasına olanak tanır.

Kafka Tüketici Yapılandırması

Görüntü kredi: unsplash

En önemli yapılandırma ayarlarından birkaçı, tüketici davranışını nasıl etkiledikleriyle birlikte aşağıda özetlenmiştir.

Varsayılan ayarlar

Tek zorunlu ayar, bootstrap.servers'tır, ancak istekleri, onları oluşturan istemci örneğine kolayca bağlayabilmeniz için bir client.id ayarlamanız gerekir. Müşteri kotalarını uygulamak için belirli bir gruptaki tüm tüketiciler genellikle aynı müşteri kimliğine sahip olacaktır.

Grup Kurma

Basit atama API'sini kullanıyorsanız ve Kafka'da ofset tutmanız gerekmiyorsa, her zaman group.id'yi yapılandırmanız gerekir. Oturum zaman aşımını ayarlamak için session.timeout.ms değeri geçersiz kılınabilir.
Oturum zaman aşımını ayarlamak için session.timeout.ms değeri geçersiz kılınabilir. C/C++ ve Java istemcilerinde varsayılan zaman aşımı 10 saniyedir, ancak örneğin kötü ağ bağlantısı veya uzun GC duraklamaları nedeniyle aşırı yeniden dengelemeyi önlemek için bu süreyi uzatabilirsiniz.

Daha uzun bir oturum zaman aşımını benimsemenin en büyük dezavantajı, koordinatörün bir tüketici örneğinin ne zaman başarısız olduğunu belirlemesinin daha uzun sürmesidir, bu da gruptaki başka bir tüketicinin bölümlerini almasının daha uzun sürmesi anlamına gelir. Normal kapatmalar ise, tüketicinin koordinatöre gruptan çıkmak için açık bir istek göndermesi ve anında yeniden dengeye neden olmasıyla tetiklenir.

max.poll.interval.ms, aşırı yeniden dengeleme üzerinde etkisi olabilecek başka bir özelliktir. Bu parametre, tüketici işleminin başarısız olduğuna karar verilmeden önce yoklama yöntemi çağrıları arasındaki maksimum süreyi ayarlar. Programınız mesajları işlemek için varsayılan 300 saniyeden daha fazla zaman gerektiriyorsa, güvenle artırabilirsiniz.

Ofset Yönetimi

Ofset sıfırlama ilkesi ve otomatik tamamlamanın etkinleştirilip etkinleştirilmediği, denkleştirme yönetimini etkileyen en önemli iki seçenektir. İlk olarak, enable.auto.commit true olarak ayarlanırsa (bu varsayılandır), tüketici, auto.commit.interval.ms tarafından tanımlanan aralıkta ofsetler gerçekleştirir. Zaman aşımı varsayılan olarak 5 saniyeye ayarlanmıştır.
Otomatik taahhüt ofsetleri, tüketicide varsayılan olarak etkinleştirilmiştir. Otomatik taahhüt kullanarak "en az bir kez" teslimat elde edersiniz: Kafka hiçbir iletinin kaybolmamasını sağlasa da, yinelemelerin gerçekleşmesi mümkündür. auto.commit.interval.ms konfigürasyon özelliği, kullanıcı tarafından seçilen bir periyoda sahip bir cron görevi görür. Tüketici çökerse, çöken tüketici tarafından tutulan tüm bölümlerin konumları, bir yeniden başlatma veya yeniden dengelemeden sonra son taahhüt edilen ofset değerine sıfırlanır. Bu gerçekleşirse, son taahhüt edilen pozisyon, otomatik taahhüt aralığının kendisi kadar eski olabilir. Önceki taahhütten bu yana alınan tüm mesajlar yeniden okunmalıdır.

Kafka Tüketici Grubu Komut Aracı

Görüntü kredi: Unsplash

Tüketici gruplarının durumu, bir Kafka yönetici yardımcı programı kullanılarak görüntülenebilir.

Alfabetik sıraya göre gruplar

Kafka dağılımına dahil olan kafka-tüketici-grupları işlevi, kümedeki aktif grupların bir listesini elde etmek için kullanılabilir. Listeyi her bir aracıyı inceleyerek topladığı için bu, büyük bir kümede uzun zaman alabilir.
bin/kafka-tüketici grupları –bootstrap-sunucu ana bilgisayarı:9092 –liste

Grup Açıklaması

Kafka-tüketici grupları işlevi, belirli bir grup hakkında veri toplamak için de kullanılabilir. Örneğin, foo grubu için geçerli atamaları görmek için aşağıdaki komutu yürütün:
bin/kafka-tüketici-grupları –bootstrap-sunucu ana bilgisayarı:9092 –açıkla –grup foo

Sonuç

Yukarıdaki açıklamada Kafka tüketici grubu ve süreç boyunca nasıl kullanıldığını görebiliriz.

Kaynak: Plato Data Intelligence: PlatoData.io

spot_img

En Son İstihbarat

spot_img