Berbagi teknologi

Pengurangan diagram kerangka dasar Kafka

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Model titik tunggal

1. Konsep kata benda

  1. Makelar : merujuk pada node di cluster Kafka. Klaster Kafka terdiri dari beberapa Broker yang bekerja sama untuk menangani penyimpanan, transmisi, dan konsumsi pesan. Broker mengelola satu atau lebih partisi.

  2. Tema : Produser mengirimkan pesan ke Topik yang ditentukan, dan konsumen berlangganan Topik untuk mendapatkan pesan tersebut. Topiknya sendiri hanyalah pengelompokan logis dan tidak memiliki konsep penyimpanan fisik.

  3. Partisi : Ini adalah bagian dari Topik dan unit dasar untuk menyimpan dan memproses pesan di Kafka. Setiap Topik dapat dibagi menjadi beberapa Partisi, dan setiap Partisi merupakan urutan pesan yang teratur dan tidak dapat diubah.

  4. Replika: Sebuah partisi dapat memiliki banyak salinan.

  5. Pemimpin Pialang: Di bawah banyak salinan suatu partisi, broker bertanggung jawab untuk memproses semua permintaan baca dan tulis untuk partisi tersebut.

  6. PengikutBroker: Di bawah banyak salinan suatu partisi, broker yang bertanggung jawab untuk menyinkronkan data pemimpin terletak di partisi tersebut.

Masukkan deskripsi gambar di sini

Produser mengirimkan pesan (catatan) ke Kafka, dan konsumen memperoleh data melalui offset (offset, mirip dengan subskrip array).

Pada saat yang sama, setiap partisi akan memiliki file Lognya sendiri. Kafka menggunakan file log untuk menyimpan data ke disk.

2. Ekspansi cluster-horizontal terdistribusi

1. Topik beberapa partisi

Masukkan deskripsi gambar di sini

Tentang produksi

Produsen terhubung ke cluster Kafka melalui Bootstrap Broker. Langkah ini adalah membuat koneksi awal dan mendapatkan metadata cluster.

Setelah produsen mendapatkan metadata ini, ia mengetahui siapa broker pemimpin untuk setiap partisi dan oleh karena itu dapat mengirim pesan langsung ke broker pemimpin yang benar.

Produser harus menentukan Topik saat mengirim pesan, tetapi partisi bersifat opsional.

  • Tidak ada partisi yang ditentukan : Jika produsen tidak menentukan partisi secara manual, Kafka akan mendistribusikan pesan ke partisi sesuai dengan strategi partisi default. Strategi partisi default adalah sebagai berikut:
    • Jika pesan memiliki kunci, Kafka akan menentukan partisi berdasarkan nilai hash kunci tersebut. Kunci yang sama selalu ditetapkan ke partisi yang sama.
    • Jika pesan tidak memiliki kunci, Kafka akan menggunakan polling atau distribusi acak pesan ke partisi untuk memastikan pesan terdistribusi secara merata.
  • Tentukan partisi : Produsen juga dapat secara eksplisit menentukan partisi saat mengirim pesan. Dengan cara ini, pesan dikirim langsung ke partisi yang ditentukan.

Di Kafka, ketika produsen mengirimkan pesan ke broker, operasi pertama broker adalah merekam pesan ke disk untuk memastikan persistensi dan keandalan pesan.

Tentang konsumsi

Konsumen di Kafka biasanya tergabung dalam kelompok konsumen. Setiap grup konsumen memiliki ID grup unik. Konsep kelompok konsumen digunakan untuk mencapai penyeimbangan beban dan konsumsi pesan paralel.

Jika beberapa konsumen tergabung dalam grup yang sama, Kafka akan menetapkan partisi Topik ke konsumen dalam grup tersebut.Setiap partisi hanya dapat dikonsumsi oleh satu konsumen dalam grup, yang dapat mencapai penyeimbangan beban.

  • Seorang konsumen berlangganan suatu Topik

    • Jika hanya satu konsumen yang berlangganan suatu Topik, maka konsumen tersebut akan menerima seluruh pesan dalam Topik tersebut.
  • Beberapa konsumen termasuk dalam kelompok yang sama

    • Partisi dalam suatu Topik didistribusikan kepada konsumen dalam grup. Setiap partisi hanya akan dikonsumsi oleh satu konsumen dalam grup.
    • Jika jumlah konsumen melebihi jumlah partisi, kelebihan konsumen tidak akan ditempatkan pada partisi mana pun dan akan tetap menganggur. Konsumen ini dapat secara otomatis mengambil alih partisi mereka ketika konsumen lain keluar, sehingga mencapai ketersediaan yang tinggi.
    • Jika jumlah konsumen kurang dari jumlah partisi, beberapa konsumen akan diberikan beberapa partisi.
  • Beberapa konsumen termasuk dalam kelompok yang berbeda

    • Setiap grup akan menggunakan semua pesan dalam Topik secara mandiri. Artinya, pesan tersebut disiarkan ke seluruh konsumen dalam kelompok tersebut.

Tentang menambahkan partisi baru

Kafka akan membuat partisi baru di cluster. Partisi baru ini akan ditugaskan ke Broker berbeda untuk mencapai penyimpanan seimbang dan ketersediaan data yang tinggi. Kafka tidak secara otomatis mendistribusikan ulang atau menyeimbangkan data dari partisi yang ada ke partisi baru. Partisi baru kosong sejak dibuat, dan data hanya akan ditulis ke partisi baru ini ketika produsen berikutnya mengirim pesan. Kelompok konsumen akan merasakan perubahan jumlah partisi dan memicu penyeimbangan kembali.

2. Banyak salinan partisi

Masukkan deskripsi gambar di sini

Kafka mengizinkan setiap partisi memiliki beberapa replika (Replika), yang disimpan di Broker berbeda. Satu replika disebut Pemimpin dan bertanggung jawab untuk memproses semua permintaan baca dan tulis. Replika lainnya adalah Pengikut dan bertanggung jawab untuk menyinkronkan data Pemimpin.

Hanya satu salinan dari beberapa salinan yang dapat membaca dan menulis pada saat yang sama, yaitu salinan Pemimpin. Salinan lainnya menjadi salinan Pengikut dan digunakan sebagai cadangan.