Mengenal lebih dalam Apache Kafka

Aplikasi yang biasa digunakan untuk publish (sebagai pengirim data) dan subscribe (yang menerima data). Ada sebuah pertanyaan, terus bedanya apa sama database ? Database jika kita simpan ya akan tersimpan, jika kita ambil kita akan get data di database, untuk kafka alurnya adalah akan mengirim dimana aplikasi tersedia yang melakukan subscribe akan menerima pesan yang dikirimkan.

Artikel dari amazon web services tentang publisher dan subscribe messaging https://aws.amazon.com/pub-sub-messaging/

Jika kita simulasikan ada sebuah Tabel di database, di Kafka ada sebuah Topic. Selain kafka sebenarnya banyak ya, tapi yang populer sampai saat ini adalah Kafka.

Apache kafka dibuat oleh developer LinkedIn, kemudian di donasikan ke Apache Software sehingga namanya dikenal sebagai Apache Kafka, kafka di tulis menggunakan bahasa Scala dan Java.

Contohkan aplikasi yang sebelum menggunakan publish subscribe di java

Simulasi aplikasi sebelum menggunakan publish/subscribe

Terlihat pada gambar diatas, komunikasi yang terjadi adalah 1 arah dimana bagian atas sebagai pengirim sebuah data. Sedangkan jika kita menggunakan apache kafka berikut gambaran nya :

Simulasi penggunaan Apache Kafka

Ada peran message broker, Message broker merupakan layanan antarmuka pengantar pesan yang berada sebagai penengah antara program yang terhubung.

Kafka kita mengenal namanya produce dan consumer, apa itu ?

Producer itu pihak yang mengirim data ke message broker, consumer adalah pihak yang mengambil/menerima data dari message broker. Aplikasi bisa bertindak sekaligus baik sebagai producer maupun consumer.

Setelah kita mengetahu apa itu kafka dan bagaimana simulasi sebuah aplikasi yang menggunakan Kafka, berikut arsitektur Apache Kafka yang bisa di gambarkan :

Sumber : https://data-flair.training

Di lihat dari gambar di atas bisa kita simpulkan apache kafka memiliki sebuah kafka ecosystem yang di dalam nya terdapat kafka cluster tempat broker berada dan ada nya sebuah zookeeper.

Zookeeper adalah layanan terpusat untuk memelihara informasi konfigurasi, penamaan, menyediakan sinkronisasi terdistribusi, dan menyediakan layanan grup.

Selengkapnya mengenai zookeeper https://zookeeper.apache.org

Selanjutnya adalah penulis akan membahas hal penting dari sebuah kafka itu sendiri yaitu Topic.

Data di kafka disimpan dalam Topic. Analogi yang deket untuk Topic, jika di database adalah Table, tetapi data di Topic tidak bisa di ubah

Topic Partitions. Sumber : https://www.researchgate.net/profile/Martin-Kleppmann

Jika kita membuat sebuah topic kita bisa menentukan berapa jumlah partisi. Partisi adalah sebuah bagian-bagian, kenapa butuh partisi ? Misalkan aplikasi consumer ada 3, partisi yang dibuat hanya 1, otomatis yang menerima hanya 1 consumer saja, jadi sebelum membuat sebuah topic agar lebih dipersiapkan berapa jumlah partisi yang dibutuhkan dan biasanya berjumlah ganjil.

Ingat topic tidak bisa di ubah ya

Bagaimana kita menentukan partisi mana yang akan digunakan ? Ada teknik adalah dengan melakukan hashing lalu dilakukan modulo. Jika bingung boleh tidak ditentukan (secara default akan ditentukan oleh Kafka itu sendiri). Ketika consumer membaca data terakhir disebut dengan offset, dst untuk consumer lainnya akan read di urutan selanjutnya.

Replication

Simulasi sebuah replication

Replication atau replikasi adalah Menduplikasi topic yang sudah ada.

Di atas contoh ada 3 server kafka, terlihat bahwa terdapat 2 partisi, p1 dan p2, keduanya sama sama di replikasi.

R2 terpisah, itu semua sudah diatur oleh kafka itu sendiri, tapi ingat di satu server pasti beda replikasi, kenapa ? Ketika di production kejadian server mati, otomatis partisi tsb akan hilang, dengan terpisah apabila terjadi hal demikian maka ada backup.

Consumer Group

Sumber : consumer-groups.png

Mari kita bahas apa itu consumer group, jika penulis dapat simulasikan adalah sebagai berikut:

Simulasi Consumer Group

Diatas sebuah partisi terbagi menjadi duaTerdapat sebuah aplikasi consumer. Maka otomatis kedua partisi tsb akan terkirim, tetapi lihat jika ada aplikasi consumer ke2, tetapi dia menerima dari kedua partisi yang sama seperti aplikasi consumer, jika seperti maka ketika ada case di pembayaran ketika ada order maka dia harus membayar dua kali, nah dengan adanya case tsb maka dibuatkan lah namanya consumer group (2 aplikasinya nya ya) lihat gambar di bawah ini :

Simulasi Consumer Group

Ketika ada aplikasi consumer baru (contohnya merchant) maka harus dibuat consumer grup lagi.

Simulasi Consumer Group

Pasti akan timbul pertanyaan, kenapa aplikasi yang ketiga tidak mendapat consumer, ingat 1 partisi 1 consumer ya, maka ketika kita membuat partisi usahakan sama dengan aplikasi nya. Kegunaan lain adalah untuk kecepatan dalam pemrosesan data, karena makin banyak partisi makin banyak yang consum dan tentu cepat.

Retention Policy

  1. Log retention time
  2. Log retention bytes
  3. Offset retention time

Di kafka sayangnya topic tidak bisa di hapus seperti di database. Maka mau tidak mau jika kita akan menghapus pasti akan terhapus semua isi dalam topic. Sama halnya jika di database apabila ada id sama yang masuk maka akan terjadi update, jika di kafka akan terus masuk datanya. Nah muncul lah topic ini, apa itu ? Retention berfungsi untuk menghapus data yang tidak digunakan di kafka.

Di topic ini ada beberapa automatically delete

  • Log retention time (berapa lama data akan tersimpan ? By default adalah 7 hari) tetapi apakah bisa dirubah ? Ya pengaturan tsb dapat diubah misal 1 hari atau 30 hari. Tapi terkadang dengan cara ini ketika men set 30 hari misalnya, tetapi ketika belum 30 hari data sudah penuh maka hal itu tidak berguna, untuk mengatasi hal tersebut adalah menggunakan cara,
  • Log retention byte (pengaturan berdasarkan ukuran data yang disimpan)
  • Offset retention time (lokasi terakhir mengkonsumsi data) nah fungsi ini adalah seberapa lama data offset ini tersimpan di kafka.

Oke, EnigmaNians.

Semoga penjelasan penulis bermanfaat ya. Artikel selanjutnya adalah kita akan membahas bagaimana cara melakukan instalasi dan menjalankan Apache Kafka.

Referensi :

  • Youtube — Pemrograman Zaman Now
  • Kafka Documentation
  • Google

Enigma IT Bootcamp

Information Technology Company

For Recruitment:
📧: recruitment@enigmacamp.com
📞: +62 813 8711 8339
For Partnership:
📧: sales@enigmacamp.com
📞: +62 21 2780 6212

https://www.enigmacamp.com/

--

--

--

Enigma IT Bootcamp Blog

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Enigmacamp

Enigmacamp

Enigma IT Bootcamp Blog

More from Medium

Spring Kafka - Publish messages to Topic & Consume messages from topic

Newbie’s intro to kafka

What you can do with Apache Kafka

[Elasticsearch] Function score query