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
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.