Apa itu Kafka?

Apache Kafka adalah penyimpanan data terdistribusi yang dioptimalkan untuk menyerap dan memproses data streaming secara waktu nyata. Data streaming adalah data yang dihasilkan oleh ribuan sumber data secara terus-menerus, yang biasanya mengirimkan catatan data secara bersamaan. Platform streaming perlu menangani arus data yang konstan ini, dan memproses data secara berurutan serta bertahap.

Kafka menyediakan tiga fungsi utama bagi penggunanya:

  • Menerbitkan dan berlangganan aliran catatan
  • Menyimpan aliran catatan secara efektif sesuai urutan pembuatan catatan
  • Memproses aliran catatan secara waktu nyata

Kafka terutama digunakan untuk membangun alur data streaming waktu nyata dan aplikasi yang beradaptasi dengan aliran data. Kafka menggabungkan perpesansan, penyimpanan, dan pemrosesan aliran untuk memungkinkan penyimpanan dan analisis data historis dan waktu nyata. 

Apa kegunaan Kafka?

Kafka digunakan untuk membangun alur data streaming waktu nyata dan aplikasi streaming waktu nyata. Alur data secara andal memproses dan memindahkan data dari satu sistem ke sistem lainnya, dan aplikasi streaming adalah aplikasi yang mengonsumsi aliran data. Misalnya, jika Anda ingin membuat alur data yang mengambil data aktivitas pengguna untuk melacak cara orang menggunakan situs web Anda secara waktu nyata, Kafka akan digunakan untuk menyerap dan menyimpan data streaming sembari menyajikan pembacaan untuk aplikasi yang mendukung alur data. Kafka juga sering digunakan sebagai solusi broker pesan, yang merupakan platform yang memproses dan menjembatani komunikasi antara dua aplikasi.

Bagaimana cara kerja Kafka?

Kafka menggabungkan dua model perpesanan, antrean dan langganan-penerbitan, untuk memberikan manfaat utama dari masing-masing model kepada konsumen. Antrean memungkinkan pemrosesan data didistribusikan di banyak instans konsumen, yang membuatnya sangat terukur. Namun, antrean tradisional tidak bersifat multipelanggan. Pendekatan langganan-penerbitan bersifat multipelanggan, tetapi karena setiap pesan masuk ke setiap pelanggan, pendekatan ini tidak dapat digunakan untuk mendistribusikan pekerjaan di beberapa proses pekerja. Kafka menggunakan model log yang dipartisi untuk menyatukan kedua solusi ini. Log adalah rangkaian catatan yang diurutkan, dan log ini dipecah menjadi segmen, atau partisi, yang sesuai dengan pelanggan yang berbeda. Artinya, mungkin terdapat beberapa pelanggan untuk topik yang sama dan masing-masing diberi partisi untuk memungkinkan skalabilitas yang lebih tinggi. Akhirnya, model Kafka menyediakan kemampuan untuk diputar ulang, yang memungkinkan beberapa aplikasi independen membaca dari aliran data untuk bekerja secara independen dengan kecepatan mereka sendiri.

Antrean

Langganan-Penerbitan

Apa saja manfaat dari pendekatan Kafka?

Skala Dapat Dikembangkan

Model log yang dipartisi Kafka memungkinkan data didistribusikan di beberapa server, yang membuatnya dapat diskalakan melampaui kapasitas yang dapat ditampung dalam satu server. 

Cepat

Kafka memisahkan aliran data sehingga latensinya sangat rendah, yang membuatnya sangat cepat. 

Tahan lama

Partisi didistribusikan dan direplikasi di banyak server, dan data tersebut semuanya ditulis ke disk. Hal ini membantu melindungi dari kegagalan server, yang membuat data sangat toleran terhadap kesalahan dan tahan lama. 

Bagaimana arsitektur Kafka mengintegrasikan model yang berbeda?

Kafka memperbaiki dua model yang berbeda dengan menerbitkan catatan untuk topik yang berbeda. Setiap topik memiliki log yang dipartisi, yang merupakan log komit terstruktur yang melacak semua catatan secara berurutan dan menambahkan yang baru secara waktu nyata. Partisi ini didistribusikan dan direplikasi di beberapa server, yang memungkinkan skalabilitas tinggi, toleransi kesalahan, dan paralelisme. Setiap konsumen diberi partisi dalam topik, yang memungkinkan multipelanggan sekaligus mempertahankan urutan data. Dengan menggabungkan model perpesanan ini, Kafka menawarkan manfaat dari keduanya. Kafka juga bertindak sebagai sistem penyimpanan yang sangat terukur dan toleran terhadap kesalahan dengan menulis dan mereplikasi semua data ke disk. Secara default, Kafka menyimpan data di disk sampai kehabisan ruang, tetapi pengguna juga dapat menetapkan batas retensi. Kafka memiliki empat API:

  • API Produsen: digunakan untuk menerbitkan aliran catatan ke topik Kafka.
  • API Konsumen: digunakan untuk berlangganan topik dan memproses aliran catatan mereka.
  • API Aliran: memungkinkan aplikasi untuk berperilaku sebagai prosesor aliran, yang mengambil aliran input dari topik dan mengubahnya menjadi aliran output yang masuk ke topik output yang berbeda.
  • API Konektor: memungkinkan pengguna untuk mengotomatiskan penambahan aplikasi atau sistem data lain ke topik Kafka mereka saat ini tanpa hambatan.

Apa saja perbedaan antara Apache Kafka vs. RabbitMQ?

RabbitMQ adalah broker pesan sumber terbuka yang menggunakan pendekatan antrean pesan. Antrean tersebar di seluruh klaster simpul dan secara opsional direplikasi, dengan setiap pesan hanya dikirimkan ke satu konsumen.

Karakteristik

Apache Kafka

RabbitMQ

Arsitektur

Kafka menggunakan model log yang dipartisi, yang menggabungkan pendekatan antrean perpesanan dan langgan penerbitan.

RabbitMQ menggunakan antrean perpesanan.

Skalabilitas

Kafka menyediakan skalabilitas dengan memungkinkan partisi didistribusikan ke berbagai server.

Tingkatkan jumlah konsumen ke antrean untuk menskalakan ke luar pemrosesan pada konsumen yang bersaing.

Retensi pesan

Berbasis kebijakan, misalnya pesan dapat disimpan selama satu hari. Pengguna dapat mengonfigurasi periode retensi ini.

Berbasis pengakuan, artinya pesan dihapus saat dikonsumsi.

Beberapa konsumen

Beberapa konsumen dapat berlangganan topik yang sama karena Kafka memungkinkan pesan yang sama diputar ulang dalam jangka waktu tertentu.

Beberapa konsumen tidak dapat menerima pesan yang sama karena pesan dihapus saat dikonsumsi.

Replikasi

Topik direplikasi secara otomatis, tetapi pengguna dapat mengonfigurasi topik secara manual agar tidak direplikasi.

Pesan tidak direplikasi secara otomatis, tetapi pengguna dapat mengonfigurasinya secara manual agar direplikasi.

Pengurutan pesan

Setiap konsumen menerima informasi secara berurutan karena arsitektur log yang dipartisi.

Pesan dikirim ke konsumen berdasarkan urutan kedatangan mereka ke antrean. Jika ada konsumen yang bersaing, setiap konsumen akan memproses bagian dari pesan itu.

Protokol

Kafka menggunakan protokol biner melalui TCP.

Protokol antrean pesan lanjutan (AMQP) dengan dukungan melalui plugin: MQTT, STOMP.

Baca selengkapnya tentang perbedaan antara Kafka dan RabbitMQ»

Bagaimana AWS dapat mendukung kebutuhan Kafka?

Baca selengkapnya tentang cara melakukan deployment Kafka secara manual di AWS di sini.

AWS juga menawarkan Amazon MSK, yaitu layanan terkelola penuh yang paling kompatibel, tersedia, dan aman untuk Apache Kafka, yang memungkinkan pelanggan mengisi danau data, mengalirkan perubahan ke dan dari basis data, serta mendukung machine learning dan aplikasi analitik. Dengan Amazon MSK, pelanggan dapat menghabiskan lebih sedikit waktu untuk mengelola infrastruktur dan lebih banyak waktu membangun aplikasi. Pelajari selengkapnya tentang Amazon MSK.

Langkah Berikutnya di AWS

Daftar untuk akun gratis

Dapatkan akses secara instan ke AWS Tingkat Gratis.

Daftar 
Mulai membangun di konsol

Mulai membangun di Konsol Manajemen AWS.

Masuk