Kafka Producer

Producers

Producer akan mengirimkan data ke Kafka Topics, dan data tersebut akan ditulis ke sebuah partition tertentu. Producer juga menentukan ke mana data akan ditulis (yaitu, ke Kafka Broker mana). Jika salah satu Kafka Broker mengalami masalah atau kegagalan, sistem Kafka akan secara otomatis memulihkan dirinya.

Producers : Message Keys

Sebagai pengirim data, producer dapat memilih untuk menyertakan message Message Key saat mengirim data. Message Key dapat berupa angka, teks, data biner, atau jenis data lainnya.
Jika Message Key tidak diberikan, maka data akan dikirim secara merata ke semua partisi yang tersedia dalam sistem, dengan menggunakan metode yang disebut round robin. Metode ini memastikan bahwa setiap partisi dalam sistem akan menerima jumlah data yang sama sehingga data dapat didistribusikan dengan lebih seimbang.
Jika kunci Message Key diberikan, maka data akan dikelompokkan berdasarkan hasil dari proses hash yang dilakukan terhadap kunci tersebut, dan akan dikirim ke partisi yang sesuai dengan hasil hash tersebut. Hal ini memungkinkan kita untuk mengelompokkan data berdasarkan kunci tertentu ke dalam partisi yang sama, dan biasanya digunakan untuk mengelompokkan data berdasarkan entitas, seperti pelanggan atau produk, sehingga memudahkan pengolahan data dengan lebih efisien dan akurat. Contoh penggunaanya adalah sebagai berikut:

Kafka Message Key Hashing

Saat sebuah record akan dikirimkan, record tersebut akan mengalami proses key hashing terlebih dahulu di bagian Producer Partitioner logic.
Proses key hashing ini menggunakan algoritma hash tertentu, seperti murmur2 atau FNV1A, untuk menghasilkan nilai hash yang unik dan acak dari Message Key.
Nilai hash ini akan digunakan untuk menentukan partisi yang akan menerima rekaman tersebut. Dengan menggunakan nilai hash sebagai faktor penentu partisi, kita dapat memastikan bahwa rekaman-rekaman dengan kunci pesan yang sama akan selalu ditempatkan dalam partisi yang sama, sehingga memudahkan pengolahan data dengan lebih efisien.
Berikut adalah rumus untuk metode hash Murmur2:

Anatomy Kafka Message

Kafka Message Serializer

Saat kita ingin mengirimkan data ke Kafka, kita harus mengonversi data tersebut menjadi format byte terlebih dahulu agar bisa diproses oleh Kafka. Proses ini disebut serialisasi.
Ada beberapa pilihan serializer yang umum digunakan dalam proses serialisasi data pada Kafka, di antaranya:
String/JSON: Data dalam bentuk string atau JSON diubah menjadi byte array menggunakan serializer seperti StringSerializer atau JsonSerializer.
Integer/Float: Data numerik seperti integer atau float diubah menjadi byte array menggunakan serializer seperti IntegerSerializer atau FloatSerializer.
Avro: Data di serialisasi menggunakan Avro Schema yang ditentukan sebelumnya dan dikonversi ke byte array menggunakan serializer seperti AvroSerializer.
Protobuf: Data di serialisasi menggunakan Protobuf Schema dan dikonversi menjadi byte array menggunakan serializer seperti ProtobufSerializer.
Proses serialisasi pada Kafka umumnya terdiri dari beberapa langkah, antara lain: