Artikel

Konten contoh

Memahami Event Streaming dengan Kafka

Pahami urutan partisi, consumer group, offset, dan pengiriman ulang melalui log kejadian kecil.

Penulis: alfianh.id (identitas pratinjau)Lanjutan2 menit bacaTerbit:

Konten, data, dan tanggal ini merupakan contoh untuk pratinjau situs.

English

Ikuti artikel melalui RSS

Ukuran teks bacaan18px

Buka simpanan / perbaiki data

Simpanan dan ukuran teks hanya untuk browser ini. Tidak ada sinkronisasi antarperangkat.

Producer menulis ke dua partisi Kafka yang dibaca satu consumer group
Producer menulis ke dua partisi Kafka yang dibaca satu consumer group
Daftar isi

Ini artikel contoh untuk pembelajaran. Tanggal publikasi dan catatan transaksi bersifat ilustratif.

Batch menentukan catatan dalam satu run terbatas. Stream terus datang sehingga consumer memerlukan posisi tahan gagal dan aturan pengulangan kerja. Pengantar ini memakai konsep Kafka 4.1 tanpa library client tertentu. Artikel menjadi titik awal topik streaming, bukan kurikulum lengkap.

Baca log berpartisi

Producer menulis ke dua partisi Kafka yang dibaca satu consumer group
Offset berlaku dalam satu partisi; consumer membagi partisi dalam group.
partition 0: offset 40 order-A-created
partition 0: offset 41 order-A-paid
partition 1: offset 12 order-B-created

Offset 40 dan 41 menetapkan urutan dalam partisi 0. Offset 12 pada partisi 1 tidak dapat dibandingkan untuk menentukan urutan global. Jika kejadian terkait memerlukan urutan dalam partisi, producer harus merutekannya secara konsisten, sering kali dengan kunci sama. Perubahan jumlah partisi atau strategi partisi perlu meninjau asumsi tersebut.

Dalam satu consumer group, setiap partisi yang dialokasikan memiliki satu consumer pada suatu waktu. Group lain dapat membaca topic yang sama secara mandiri. Menambah consumer melebihi jumlah partisi tidak menambah paralelisme partisi dalam group itu.

Tentukan waktu commit

Offset yang sudah di-commit menentukan tempat group melanjutkan pembacaan; nilainya menunjuk catatan berikutnya. Setelah memproses offset 41, lakukan commit 42 untuk partisi itu. Jika tujuan sudah ditulis lalu consumer gagal sebelum commit, catatan dapat dikirim kembali.

read offset 41
write event to destination using event_id
commit next offset 42

Urutan ini mendukung penanganan at-least-once ketika kegagalan dan commit dikelola dengan benar. Tujuan harus tahan replay. Commit lebih dahulu membawa risiko sebaliknya: kegagalan sebelum penulisan tujuan dapat menghilangkan efeknya. Transaksi Kafka dapat mengoordinasikan pembacaan dan penulisan Kafka yang didukung, tetapi database eksternal tidak otomatis berbagi batas atomik tersebut.

Rancang latihan replay

Kirim dua kejadian untuk satu pesanan. Hentikan consumer setelah penulisan tujuan tetapi sebelum commit offset, lalu jalankan ulang. Pastikan keunikan event_id mencegah efek ganda dan pembaruan terlambat tidak menimpa revisi lebih baru. Pantau lag per partisi serta error pemrosesan; loop sehat tetap dapat menghasilkan data bisnis salah.

Retention membatasi seberapa jauh consumer dapat mengulang log. Sepakati kebutuhan pemulihan sebelum menganggap log sebagai arsip permanen. Baca rujukan desain Kafka untuk jaminan deployment dan client pilihan Anda.

Referensi