Kafka, apa yang akan terjadi dengan pesan jika anggota kelompok konsumen turun?

Misalkan kita mempunyai topik bernama Topic dan grup konsumen CG dengan tiga konsumen. Offset grup sama dengan 0.

Konsumen mulai membaca pesan.

Urutan baca:

  1. Konsumen 1 membaca pesan 1.
  2. Konsumen 2 membaca pesan 2.
  3. Konsumen 3 membaca pesan 3.
  4. Konsumen 2 melakukan pesan 2.
  5. Konsumen 3 melakukan pesan 3.
  6. Konsumen 1 gagal memproses pesan 1 dan mati.

Pertanyaannya adalah: apa yang akan terjadi dengan pesan 1?

Atau mungkin saya salah memahami cara konsumen membaca pesan karena saya baru mengenal Kafka.

Versi: Apache Kafka 2.4.0


person Prisacari Dmitrii    schedule 25.12.2019    source sumber


Jawaban (2)


Anda melewatkan tentang partisi, Beberapa konsumen dari grup yang sama tidak akan pernah menggunakan pesan dari yang sama partisi

Misalkan jika Anda memiliki topik dengan tiga partisi (P0,P1,P2), dan jika Anda memiliki tiga konsumen (C1,C2,C3) dari grup yang sama maka masing-masing konsumen akan mulai mengonsumsi dari setiap partisi

masukkan deskripsi gambar di sini

Jika ada konsumen yang gagal mengirimkan offset dan turun, maka konsumen tersebut akan mulai lagi menggunakan pesan dari offset sebelumnya (dalam kasus Anda 0)

Misalkan Anda memiliki topik 5 partisi (P0,P1,P2,P3,P4) dan tiga konsumen (C0,C1,C3) dari grup yang sama. Kemudian konsumen akan mencoba melakukan load balance secara merata dengan masing-masing mengambil dua partisi masukkan deskripsi gambar di sini

C1 mengkonsumsi dari P0 dan P1, dan C2 mengkonsumsi dari P2 dan P3 dan sisa C3 mengkonsumsi dari P4.

person Deadpool    schedule 25.12.2019
comment
Jadi jika C3 menggunakan semua pesan dari partisinya sendiri, akankah kafka (atau klien kafka) menetapkan ulang partisi lain ke dirinya sendiri untuk membantu konsumen lain? - person Prisacari Dmitrii; 25.12.2019
comment
Tidak ada kafka yang tidak akan mengundurkan diri seperti itu @PrisacariDmitrii - person Deadpool; 25.12.2019

Setiap konsumen akan memiliki partisi yang ditetapkan untuk mereka. Katakanlah kita memiliki 6 partisi:

Konsumen 1: Partiton 1 & 2
Konsumen 2: Partisi 3 & 4
Konsumen 3: Partisi 5 & 6

Ketika Konsumen 1 turun, kelompok konsumen akan menyeimbangkan kembali dan menetapkan partisi gratis ke konsumen lain, sehingga memberi kita pengaturan berikut:

Konsumen 2: Partisi 1 & 3 & 4
Konsumen 3: Partisi 2 & 5 & 6

Konsumen lain akan memulai dari offset terakhir yang dilakukan pada partisi tersebut.

person doompickaxe    schedule 25.12.2019