Apache Kafka - Part 3 - Infrastruktur Fisik
Pendahuluan
Pendahuluan awal mengenai Kafka dilihat di Kafka - Part 1 ?
Kenapa harus memakai Kafka dilihat di Kafka - Part 2 ?
Bagaimana sebenarnya infrastuktur nya Kafka ini ?
Kalau kita sudah tahu mengenai apa itu Kafka dan kenapa perlu menggunakan Kafka, maka pertanyaan selanjutnya adalah lebih kepada teknis.
Bagaimana sebenarnya Kafka ini dibangun dan dibuat ?
Dari website officialnya kafka, disana disebutkan bahwa :
Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications.
Ada beberapa kata kunci lagi kalau kita lihat, yaitu :
- distributed
- high performance
- data integration
Jadi secara desain, memang Kafka dibuat dengan konsep seperti diatas.
Untuk membuat Kafka sebagai sistem terdistribusi, maka Kafka dibuat dalam bentuk cluster.
Cluster adalah kumpulan banyak server dalam sebuah grup.
Artinya Kafka terdiri dari banyak server yang dikelompokkan dalam sebuah grup.
Kalau mau lebih canggih lagi, sebuah infrastruktur Kafka bisa menggunakan banyak cluster, bukan hanya satu cluster.
Dengan desain seperti itu, yang melibatkan banyak server, maka akan bisa dicapai tujuan sbb :
- high availibility (kalau satu server mati, maka server lain akan menggantikan).
- skalabilitas (kalau butuh tambahan pemrosesan, memori, atau disk, maka otomatis server-servernya akan saling menopang)
- fault-tolerant (kalau ada server yang bermasalah, maka akan diswitch/handle oleh server lain).
- failover (kalau ada server yang bermasalah, maka akan akan ada backup server untuk menanganinya).
- high thoughput (pemrosesan data yang banyak bisa dibagi-bagi secara paralel ke banyak server yang tersedia)
- dll
Ok, tapi bagaimana cara kita memandang Kafka secara sederhana ?
Ok cukupp bahasa tingkat tingginya yaa..
Coba sekarang kita lihat secara sederhana ..
Infratruktur Kafka itu bisa kita bagi 2 :
- Infrastruktur Fisik.
- Infrastruktur Logik.
1. Infrastruktur Fisik
Ini adalah komponen fisik yang membangun Kafka.
Kafka Server terdiri dari banyak server, yang dinamakan Broker.
Istilahnya satu Broker ini adalah satu dari Virtual Machine, EC2 Instance kalau di AWS, atau Google Compute Engine (GCE) instance di Google Cloud Platform.
Broker-broker ini yang kemudian membentuk Kafka cluster.
Bisa saja membentuk satu cluster, bisa juga banyak cluster, tergantung konfigurasi.
Hmmm, bagaimana cara mengelola begitu banyak server dan melakukan koordinasi antara server Kafka tersebut ?
Ok..ok.. tenang..
Dahulu untuk mengelola banyak server seperti itu menggunakan server lain yang khusus untuk mengelola/mengkoordinasi server-server terdistribusi.
Namanya ZooKeeper.
Tetapi semenjak release Kafka 2.8, maka ZooKeeper ini tidak dipakai lagi.
Yang dipakai adalah library pengelolaan server terdistribusi buatan internal nya Kafka sendiri.
Namanya Kafka Raft Metadata atau KRaft Metadata.
Ok, kalau begitu secara sederhana sebuah Kafka server terdiri dari banyak Broker.
Naah, di tiap broker ini akan ada namanya Partition, yaitu berupa unit penyimpanan/storage kecil-kecil.
Partition ini mempunyai struktur data bertipe seperti array, dimana disanalah akan disimpan data secara berurutan setiap kali ada message/event masuk ke Kafka di broker tersebut.
Jadi akan banyak Partition yang ada di dalam sebuah broker.
Partition ini tidak bisa dimodifikasi, cuma bisa ditambahkan data/message/event di bagian terakhirnya saja.
Partition ini bisa merupakan partition asli yang dipakai untuk transaksi baca tulis message, atau bisa jadi merupakan replica (backup) saja dari partition lainnya yang udah ada.
Disamping Partion, akan ada namanya Offset, yaitu nomor sekuensial yang bertambah sesuai dengan index dari data dalam partition.
Sebuah Partition, bisa mempunyai banyak Offset, tergantung dari berapa banyak consumer group yang terkoneksi ke partition ini.
Perihal Consumer Group akan kita bahas di part selanjutnya.
Offset ini akan berfungsi sebagai pointer atau penunjuk posisi terakhir yang dibaca oleh consumer/kafka client spesifik terhadap group tertentu.
Okeh. Kita akan lanjut part 4.