Teknologi semakin berkembang, dan tiap orang pun makin terkoneksi. Hal ini beriringan akan kebutuhan internet yang makin pesat, dan tentunya menyebabkan dibutuhkannya sistem yang reliable dan scalable. Berangkat dari kebutuhan sistem tersebut, dibutuhkan sebuah teknologi yang canggih, khususnya dibagian integrate data pada back-end development. Terdapat salah satu teknologi yang bisa kamu coba, salah satunya adalah message queue menggunakan Kafka. Mari kita bahas satu per satu fungsi dan cara kerja message queue, Kafka, dan Apache Kafka.
Message Queue
Message queue merupakan aplikasi di mana antaraplikasi, antarservis, atau antarsistem berkomunikasi melalui message. Contohnya adalah message yang berisi perintah suatu proses, informasi progres, suatu proses, atau sekadar pesan teks biasa. Message dikirim oleh pengirim ke dalam queue, lalu dibaca oleh penerima. Subyek yang mengirim (publish) ke dalam queue disebut publisher, dan yang membaca (consume) disebut consumer. Teknologi Ini sangat cocok untuk messaging system, logs, bahkan juga bisa digunakan untuk integrasi antaraplikasi maupun antarsistem. Contoh platform message queue yang populer di antaranya adalah Kafka, RabbitMQ, Amazon SQS, dan IBM MQ.
Kafka
Kafka yang dibahas di sini adalah sebuah platform dalam bidang teknologi khususnya komputer. Jadi, bukan tentang Franz Kafka seorang novelis dan cerpenis Eropa yang membawa perubahan pada sastra Barat, ya! Memang sih, nama “Kafka” ini sendiri diambil dari Franz Kafka yang penulis itu.
Kafka bukan cuma sekadar message queue, tapi juga disebut-sebut sebagai event streaming dan distributing streaming platform. Salah satu perbedaan Kafka dengan yang lainnya adalah Kafka menyimpan message dalam jangka waktu tertentu walaupun sudah dibaca. Message dalam Kafka terdistribusi, di mana bagus untuk mengurangi failure dan sangat berpengaruh pada performa. Sedikit informasi, Kafka dibuat oleh Linkedin, dan sekarang dikembangkan oleh Confluent. Website resmi Confluent adalah https://www.confluent.io/. Kamu bisa men-download paket software Confluent untuk community edition dan bisa lihat petunjuk detailnya.
Message
Unit data dari kafka disebut message. Ini sama seperti row/record pada database. Message dalam Kafka adalah simpel array of bytes, dan sebuah message bisa mempunyai pilihan bit of metadata yang disebut dengan key. Nah, key ini juga merupakan sebuah byte array. Message itu sendiri ada di dalam topics. Analogi topics dalam database adalah sebuah table atau sebuah folder dalam filesystem. Topics terdiri atas beberapa partitions. Contoh pada commit log partitions adalah single log.
Producer & Consumer
Producer dan consumer merupakan Kafka Client. Dalam paket software Confluence ini terdapat Kafka-connect. Kafka-connect juga merupakan salah satu advance Kafka Client di mana Kafka bisa terintegrasi langsung dengan database.
Producer membuat message baru, lalu mengirim ke spesifik topik. Dalam istilah sistem messaging lainnya disebut juga publisher atau writers. Secara default, produser gak peduli message dikirim ke partisi mana, tetapi bisa juga dikirim ke spesifik partisi.
Baca juga: Cara Membuat REST API dengan Node.js – Bagian 1
Consumer membaca message. Dalam istilah sistem messaging lainnya disebut juga subscriber atau readers. Consumer subscribes ke topik tertentu. Consumer menyimpan informasi record terakhir mana yang sudah dibaca, dan dinamakan offset. Offset merupakan bagian dari metadata, incremental integer id, Kafka meletakkan ini secara otomatis kedalam setiap message. Setiap message dalam partisi mempunyai unique offset. Dengan menyimpan offset dalam message yang terakhir dibaca untuk setiap partisi, baik oleh Zookeper atau Kafka itu sendiri, maka dari itu consumer bisa stop atau restart tanpa kehilangan informasi offset tersebut.
Consumer bisa dibagi menjadi beberapa grup (consumer group) di mana dalam satu grup consumer membaca topik yang sama. Di sinilah letak keunggulan Kafka. Grup memastikan setiap partisi hanya dibaca oleh satu member. Perhatikan gambar berikut di mana tiga consumer dalam satu grup membaca sebuah topik.
Consumer 0 membaca Partisi 0 pada Offset 6, Consumer 1 membaca 2 partisi berbeda, yaitu Partisi 0 dan Partisi 1 pada offset yang berbeda pula, sementara Consumer 2 membaca Partisi 3 pada Offset 10. Dengan cara ini consumer bisa scale secara horizontal walaupun dalam satu topik berisi banyak message. Jika satu consumer mati, maka Kafka secara otomatis rebalance partisi.
Broker & Cluster
Sebuah Kafka server disebut broker. Broker menerima pesan dari producer, assign offset, dan commit pesan ke dalam disk. Broker juga servis consumer, bertanggung jawab fetch request untuk partisi dan pesan yang sudah di-commit ke dalam disk. Sebuah broker bisa dengan mudah menghandel ribuan partisi dan jutaan pesan per detik.
Kafka broker didesain untuk dioperasikan sebagai bagian dari cluster. Sebuah cluster terdiri atas beberapa broker. Partisi ada di dalam broker. Masing-masing topik mempunyai satu leader.
Salah satu keunggulan Apache Kafka adalah retention, di mana pesan disimpan dalam jangka waktu tertentu atau berdasarkan storage yang sudah terpakai (size in bytes, contoh: 1 GB), setingan default berdasarkan waktu adalah adalah tujuh hari, dan ini bisa dikonfigurasi per broker atau per topik.
Tutorial
- Download paket Confluent Platform dari https://www.confluent.io/download/. Kalau mau yang gratis, pilih Community Edition
- Klik DOWNLOAD FREE.
- Decompress file
- Set variabel environment untuk Confluent Platform directory.
- Tambah Confluent Platform di retoribin ke PATH.
- Download Confluent CLI
- Versi 1.16.3 kompatibel dengan Confluent Platform versi 6.0.x . Tutorial lengkap silakan ikuti petunjuk di link berikut: https://docs.confluent.io/confluent-cli/current/installing.html
- Tambah CLI direktori ke PATH
- Pastikan CLI Confluent sudah terinstal
- Run Confluent Platform via CLI
Output
- Create topic
- Producer
- Consumer
Yak, sampai di sini dulu Tech Monday Updates kali ini. Cukup panjang ya! Tenang, belum selesai sampai di sini kok. Minggu depan bakalan ada lanjutan artikel ini lho. Kalau kamu tertarik dengan bahasan TMU yang lain, kamu bisa klik link ini ya! Punya pengalaman mengenai Kafka? Yuk diskusi bareng-bareng di kolom komentar.
Comments ( 0 )