Apache Kafka

Apache Kafka menggunakan Kunci untuk Partisi

Apache Kafka menggunakan Kunci untuk Partisi
Apache Kafka adalah platform streaming data yang bertanggung jawab untuk streaming data dari sejumlah sumber untuk banyak target. Sumber disebut juga produsen. Data yang dihasilkan dibutuhkan oleh kelompok yang sama sekali berbeda yang disebut konsumen untuk berbagai tujuan. Kafka adalah lapisan yang berada di antara produsen dan konsumen dan menggabungkan data ke dalam saluran yang dapat digunakan. Juga Kafka sendiri adalah platform terdistribusi, sehingga lapisan Kafka terdiri dari berbagai server yang menjalankan kafka, server atau node ini dikenal sebagai Kafka Pialang.

Ikhtisar itu sedikit abstrak jadi mari kita buat dalam skenario dunia nyata, bayangkan Anda perlu memantau beberapa server web. Masing-masing menjalankan situs webnya sendiri, dan log baru terus-menerus dibuat di masing-masing situs setiap detik setiap hari. Selain itu ada sejumlah server email yang perlu Anda pantau juga.

Anda mungkin perlu menyimpan data tersebut untuk keperluan pencatatan dan penagihan, yang merupakan pekerjaan batch yang tidak memerlukan perhatian segera. Anda mungkin ingin menjalankan analitik pada data untuk membuat keputusan secara real-time yang membutuhkan input data yang akurat dan segera.  Tiba-tiba Anda menemukan diri Anda dalam kebutuhan untuk merampingkan data dengan cara yang masuk akal untuk semua berbagai kebutuhan. Kafka bertindak sebagai lapisan abstraksi di mana banyak sumber dapat menerbitkan aliran data yang berbeda dan yang diberikan konsumen dapat berlangganan aliran yang dianggap relevan. Kafka akan memastikan bahwa datanya tertata dengan baik. Ini adalah bagian dalam Kafka yang perlu kita pahami sebelum kita masuk ke topik Partisi dan Kunci.

Topik Kafka, Broker dan Partisi

Kafka Topik seperti tabel database. Setiap topik terdiri dari data dari sumber tertentu dari jenis tertentu. Misalnya, kesehatan cluster Anda dapat berupa topik yang terdiri dari informasi penggunaan CPU dan memori. Demikian pula, lalu lintas masuk ke seluruh cluster dapat menjadi topik lain.

Kafka dirancang agar dapat diskalakan secara horizontal. Artinya, satu contoh Kafka terdiri dari beberapa Kafka pialang berjalan di beberapa node, masing-masing dapat menangani aliran data paralel dengan yang lain. Bahkan jika beberapa node gagal, pipa data Anda dapat terus berfungsi. Topik tertentu kemudian dapat dibagi menjadi beberapa partisi. Partisi ini adalah salah satu faktor penting di balik skalabilitas horizontal Kafka.

Beberapa produsen, sumber data untuk topik tertentu, dapat menulis ke topik itu secara bersamaan karena masing-masing menulis ke partisi yang berbeda, pada titik tertentu. Sekarang, biasanya data ditetapkan ke partisi secara acak, kecuali jika kami menyediakannya dengan kunci.

Partisi dan Pemesanan

Sekadar rekap, produser menulis data ke topik tertentu. Topik itu sebenarnya dibagi menjadi beberapa partisi. Dan setiap partisi hidup secara independen dari yang lain, bahkan untuk topik tertentu. Ini dapat menyebabkan banyak kebingungan saat pemesanan ke data penting. Mungkin Anda memerlukan data Anda dalam urutan kronologis tetapi memiliki banyak partisi untuk aliran data Anda tidak menjamin pemesanan yang sempurna.

Anda hanya dapat menggunakan satu partisi per topik, tetapi itu mengalahkan seluruh tujuan arsitektur terdistribusi Kafka. Jadi kita butuh solusi lain.

Kunci untuk Partisi

Data dari produsen dikirim ke partisi secara acak, seperti yang kami sebutkan sebelumnya. Pesan menjadi potongan data yang sebenarnya. Apa yang dapat dilakukan produsen selain hanya mengirim pesan adalah menambahkan kunci yang menyertainya.

Semua pesan yang datang dengan kunci khusus akan masuk ke partisi yang sama. Jadi, misalnya, aktivitas pengguna dapat dilacak secara kronologis jika data pengguna tersebut ditandai dengan kunci dan selalu berakhir di satu partisi. Sebut saja partisi ini p0 dan pengguna u0.

Partisi p0 akan selalu mengambil pesan terkait u0 karena kunci itu mengikatnya bersama. Tapi bukan berarti p0 hanya terikat dengan itu. Itu juga dapat menerima pesan dari u1 dan u2 jika memiliki kapasitas untuk melakukannya. Demikian pula, partisi lain dapat menggunakan data dari pengguna lain.

Intinya bahwa data pengguna tertentu tidak tersebar di partisi yang berbeda memastikan urutan kronologis untuk pengguna itu. Namun, topik keseluruhan data pengguna, masih dapat memanfaatkan arsitektur terdistribusi Apache Kafka.

Kesimpulan

Sementara sistem terdistribusi seperti Kafka memecahkan beberapa masalah lama seperti kurangnya skalabilitas atau memiliki satu titik kegagalan. Mereka datang dengan serangkaian masalah yang unik untuk desain mereka sendiri. Mengantisipasi masalah ini adalah pekerjaan penting dari setiap arsitek sistem. Tidak hanya itu, terkadang Anda benar-benar harus melakukan analisis biaya-manfaat untuk menentukan apakah masalah baru merupakan pertukaran yang layak untuk menyingkirkan masalah lama. Pemesanan dan sinkronisasi hanyalah puncak gunung es.

Semoga artikel seperti ini dan dokumentasi resmi dapat membantu Anda selama ini.

Alat Berguna untuk Gamer Linux
Jika Anda suka bermain game di Linux, kemungkinan besar Anda telah menggunakan aplikasi dan utilitas seperti Wine, Lutris, dan OBS Studio untuk mening...
Game Remaster HD untuk Linux yang Belum Pernah Rilis Linux Sebelumnya
Banyak pengembang dan penerbit game datang dengan remaster HD dari game lama untuk memperpanjang umur waralaba, harap penggemar meminta kompatibilitas...
Cara Menggunakan AutoKey untuk Mengotomatiskan Game Linux
AutoKey adalah utilitas otomatisasi desktop untuk Linux dan X11, diprogram dengan Python 3, GTK dan Qt. Dengan menggunakan skrip dan fungsionalitas MA...