Apache Kafka

Pembahagian Apache Kafka

Pembahagian Apache Kafka
Dalam pelajaran ini, kita akan melihat apa yang kita maksudkan dengan Mempartisi di Apache Kafka dan bagaimana ia mempengaruhi prestasi kluster Kafka. Konsep partition adalah pusat kluster Kafka kerana ia menggunakan partition sebagai kaedah utama untuk meningkatkan dan meningkatkan prestasi.

Harap maklum bahawa ini bukan pelajaran pengantar. Sila baca Apa itu Apache Kafka dan bagaimana cara kerjanya sebelum anda meneruskan pelajaran ini untuk mendapatkan pandangan yang lebih mendalam.

Topik di Kafka

Topik dalam Kafka adalah sesuatu di mana mesej dihantar. Aplikasi pengguna yang berminat dengan topik itu menarik mesej ke dalam topik itu dan dapat melakukan apa sahaja dengan data tersebut. Hingga waktu tertentu, sejumlah aplikasi pengguna dapat menarik pesan ini berkali-kali.

Pertimbangkan Topik seperti halaman Blog Ubuntu LinuxHint. Pelajaran itu dilanjutkan hingga selamanya dan sebilangan besar pembaca yang bersemangat dapat datang dan membaca pelajaran ini berkali-kali atau beralih ke pelajaran seterusnya yang mereka inginkan. Pembaca ini juga boleh berminat dengan topik lain dari LinuxHint juga.

Pemisahan Topik

Kafka direka untuk menguruskan aplikasi berat dan mengantri sebilangan besar mesej yang disimpan di dalam topik. Untuk memastikan toleransi kesalahan tinggi, setiap Topik dibahagikan kepada beberapa partisi topik dan setiap Partisi Topik diuruskan pada nod yang berasingan. Sekiranya salah satu node turun, node lain dapat bertindak sebagai peneraju topik dan dapat melayan topik kepada pengguna yang berminat. Berikut adalah bagaimana data yang sama ditulis untuk beberapa Partisi Topik:

Pembahagian Topik


Sekarang, gambar di atas menunjukkan bagaimana data yang sama ditiru di beberapa bahagian. Mari kita gambarkan bagaimana partisi yang berbeza dapat bertindak sebagai pemimpin pada nod / partisi yang berbeza:

Pembahagian Broker Kafka

Apabila pelanggan menulis sesuatu ke topik pada kedudukan yang Partition di Broker 0 adalah pemimpin, data ini kemudian direplikasi di seluruh broker / node sehingga mesej tetap selamat:

Replikasi merentasi Parti Broker

Lebih Banyak Bahagian, Hasil yang Lebih Tinggi

Kafka menggunakan Paralelisme untuk memberikan throughput yang sangat tinggi kepada aplikasi pengeluar dan pengguna. Sebenarnya, dengan cara yang sama, ia juga mengekalkan statusnya sebagai sistem toleransi kesalahan tinggi. Mari kita fahami sejauh mana throughput yang tinggi dicapai dengan Parallelism.

Apabila aplikasi Producer menulis beberapa mesej ke Partition di Broker 0, Kafka membuka banyak utas secara selari sehingga mesej dapat ditiru di semua Broker yang dipilih pada masa yang sama. Di sisi Pengguna, aplikasi pengguna menggunakan mesej dari satu partisi melalui utas. Semakin banyak partisi, semakin banyak utas pengguna dapat dibuka sehingga semuanya dapat berfungsi secara selari juga. Ini bermakna semakin banyak bilangan partisi dalam kluster, semakin paralelisme dapat dieksploitasi, mewujudkan sistem throughput yang sangat tinggi.

Lebih banyak Partisi memerlukan lebih banyak Pengendali Fail

Untuk mengetahui bagaimana kami dapat meningkatkan prestasi sistem Kafka dengan hanya meningkatkan jumlah partisi. Tetapi kita harus berhati-hati dengan had apa yang sedang kita lalui.

Setiap Partisi Topik di Kafka dipetakan ke direktori dalam sistem fail broker Server tempat ia dijalankan. Di dalam direktori log tersebut, akan ada dua fail: satu untuk indeks dan satu lagi untuk data sebenar setiap segmen log. Pada masa ini, di Kafka, setiap broker membuka pemegang fail untuk indeks dan fail data dari setiap segmen log. Ini bermakna bahawa jika anda mempunyai 10,000 Partition pada satu Broker, ini akan menyebabkan 20,000 Pengendali Fail berjalan secara selari. Walaupun, ini hanya mengenai konfigurasi Broker. Sekiranya sistem yang digunakan oleh Broker mempunyai konfigurasi yang tinggi, ini tidak akan menjadi masalah.

Berisiko dengan jumlah Partition yang tinggi

Seperti yang kita lihat dalam gambar di atas, Kafka menggunakan teknik replikasi intra-kluster untuk meniru mesej dari pemimpin ke partisi Replika yang terdapat di Broker lain. Kedua-dua aplikasi pengeluar dan pengguna membaca dan menulis ke partisi yang kini menjadi peneraju partisi tersebut. Apabila broker gagal, peneraju Broker tersebut tidak akan tersedia. Metadata mengenai siapa pemimpin disimpan di Zookeeper. Berdasarkan metadata ini, Kafka secara automatik akan menetapkan kepemimpinan partisi ke partisi lain.

Apabila Broker ditutup dengan perintah bersih, simpul pengawal kluster Kafka akan menggerakkan pemimpin broker penutupan secara bersiri.e. satu demi satu. jika kita mempertimbangkan untuk memindahkan pemimpin tunggal mengambil masa 5 milisaat, ketiadaan pemimpin tidak akan mengganggu pengguna kerana ketiadaan adalah untuk jangka waktu yang sangat singkat. Tetapi jika kita mempertimbangkan ketika Broker dibunuh dengan cara yang tidak bersih dan Broker ini mengandungi 5000 partisi dan dari jumlah tersebut, 2000 adalah pemimpin partisi, menetapkan pemimpin baru untuk semua partisi ini akan mengambil masa 10 saat yang sangat tinggi ketika datang ke sangat aplikasi dalam permintaan.

Kesimpulannya

Sekiranya kita menganggap sebagai pemikir peringkat tinggi, lebih banyak partisi dalam kluster Kafka membawa kepada throughput sistem yang lebih tinggi. Mengingat kecekapan ini, kita juga harus mempertimbangkan konfigurasi kluster Kafka yang perlu kita pertahankan, memori yang perlu kita tetapkan pada kluster itu dan bagaimana kita dapat menguruskan ketersediaan dan kependaman jika ada yang tidak kena.

Baca lebih banyak catatan berasaskan Ubuntu di sini dan banyak lagi mengenai Apache kafka juga.

SuperTuxKart untuk Linux
SuperTuxKart adalah tajuk hebat yang direka untuk membawa anda pengalaman Mario Kart secara percuma pada sistem Linux anda. Ia cukup mencabar dan meny...
Tutorial Battle for Wesnoth
The Battle for Wesnoth adalah salah satu permainan strategi sumber terbuka paling popular yang boleh anda mainkan pada masa ini. Bukan hanya permainan...
0 A.D. Tutorial
Daripada banyak permainan strategi di luar sana, 0 A.D. berjaya menonjol sebagai tajuk yang komprehensif dan permainan taktikal yang sangat mendalam w...