Rumah  >  Artikel  >  Java  >  Selesai Kafka dari perspektif temu bual

Selesai Kafka dari perspektif temu bual

Java后端技术全栈
Java后端技术全栈ke hadapan
2023-08-24 15:22:04965semak imbas

Kafka ialah perisian tengah mesej teragih yang sangat baik Kafka digunakan dalam banyak sistem untuk komunikasi mesej. Memahami dan menggunakan sistem pemesejan teragih hampir menjadi kemahiran yang diperlukan untuk pembangun bahagian belakang. Hari ini 码哥字节 Saya akan mulakan dengan soalan temuduga Kafka biasa dan bercakap dengan anda tentang Kafka.

Selesai Kafka dari perspektif temu bual
Peta minda

Bercakap tentang middleware mesej yang diedarkan

Soalan

  • middleware Apakah mesej yang diedarkan
  • Apakah peranan perisian tengah mesej?
  • Apakah senario penggunaan perisian tengah mesej?
  • Mesej pemilihan perisian tengah? . Seperti yang ditunjukkan dalam rajah, selepas menggunakan perisian tengah mesej, sistem perniagaan huluan menghantar mesej, yang mula-mula disimpan dalam perisian tengah mesej, dan kemudian perisian tengah mesej mengedarkan mesej kepada aplikasi modul perniagaan yang sepadan (model pengeluar-pengguna yang diedarkan). Pendekatan tak segerak ini mengurangkan gandingan antara perkhidmatan.
Seni binaSelesai Kafka dari perspektif temu bual
Tentukan perisian tengah mesej:

  • Gunakan mekanisme penghantaran mesej yang cekap dan boleh dipercayai untuk pertukaran data bebas platform
  • Berdasarkan komunikasi data untuk menyepadukan sistem teragih
  • Dengan menyediakan penghantaran mesej dan model baris gilir mesej, ia boleh digunakan dalam persekitaran pengedaran komunikasi antara proses

Merujuk kepada komponen tambahan dalam seni bina sistem sudah pasti akan meningkatkan kerumitan seni bina sistem dan kesukaran dalam operasi dan penyelenggaraan Jadi Apakah kelebihan menggunakan perisian tengah pemesejan yang diedarkan dalam sistem? Apakah peranan middleware mesej dalam sistem? . Jaminan pesanan

  • Penimbalan
  • Komunikasi tak segerak
  • Semasa temu duga, penemuduga sering mengambil berat tentang keupayaan penemuduga untuk memilih komponen sumber terbuka Ini bukan sahaja dapat menguji keluasan pengetahuan penemuduga, tetapi juga kedalaman pengetahuan penemuduga tentang sesuatu jenis sistem, dan Ia juga boleh dilihat. bahawa penemuduga mempunyai keupayaan untuk memahami keseluruhan sistem dan reka bentuk seni bina sistem. Terdapat banyak sistem pemesejan teragih sumber terbuka, dan sistem pemesejan yang berbeza mempunyai ciri yang berbeza Memilih sistem pemesejan memerlukan bukan sahaja pemahaman tertentu tentang setiap sistem pemesejan, tetapi juga pemahaman yang jelas tentang keperluan sistem anda sendiri.
  • Berikut ialah perbandingan beberapa sistem pemesejan yang diedarkan biasa:
  • Selesai Kafka dari perspektif temu bual
    Pilih

    Kata Kunci Jawapan

    • Apakah perisian tengah pemesejan teragih? Komunikasi, baris gilir, diedarkan, model pengeluar-pengguna.
    • Apakah peranan perisian tengah mesej? Penyahgandingan, pengendalian puncak, komunikasi tak segerak, penimbalan.
    • Apakah senario penggunaan perisian tengah mesej? Komunikasi tak segerak, penyimpanan dan pemprosesan mesej.
    • Mesej pemilihan perisian tengah? Bahasa, protokol, HA, kebolehpercayaan data, prestasi, transaksi, ekologi, kesederhanaan, mod tolak tarik.

    Konsep asas dan seni bina Kafka

    Soalan

    • Bercakap secara ringkas tentang seni bina Kafka?
    • Adakah Kafka mod tolak atau mod tarik Apakah perbezaan antara tolak dan tarik?
    • Bagaimana Kafka menyiarkan mesej?
    • Adakah mesej Kafka teratur?
    • Adakah Kafka menyokong pemisahan baca dan tulis?
    • Bagaimana Kafka memastikan ketersediaan data yang tinggi?
    • Apakah peranan penjaga zoo di Kafka?
    • Adakah ia menyokong transaksi?
    • Bolehkah bilangan partition dikurangkan?

    Konsep umum dalam seni bina Kafka:

    Selesai Kafka dari perspektif temu bual
    Senibina
    • Penerbit: Penerbit, iaitu pihak yang menghantar mesej. Pengeluar bertanggungjawab untuk mencipta mesej dan kemudian menghantarnya ke Kafka.
    • Pengguna: Pengguna, iaitu pihak yang menerima mesej. Pengguna menyambung ke Kafka dan menerima mesej, dan kemudian melakukan pemprosesan logik perniagaan yang sepadan.
    • Kumpulan Pengguna: Kumpulan pengguna boleh mengandungi satu atau lebih pengguna. Menggunakan pendekatan berbilang partisi + berbilang pengguna boleh meningkatkan kelajuan pemprosesan data hiliran Pengguna dalam kumpulan pengguna yang sama tidak akan menggunakan mesej berulang kali Begitu juga, mesej yang dihantar oleh pengguna dalam kumpulan pengguna yang berbeza tidak akan menjejaskan satu sama lain. Kafka melaksanakan mod P2P mesej dan mod siaran melalui kumpulan pengguna.
    • Broker: Nod proksi perkhidmatan. Broker ialah nod perkhidmatan Kafka, iaitu pelayan Kafka.
    • Topik: Mesej dalam Kafka dibahagikan dalam unit Topik Pengeluar menghantar mesej kepada Topik tertentu, dan pengguna bertanggungjawab untuk melanggan mesej Topik dan menggunakannya.
    • Partition: Topik ialah konsep logik, yang boleh dibahagikan kepada berbilang partition, dan setiap partition hanya milik satu topik. Pembahagian yang berbeza di bawah topik yang sama mengandungi mesej yang berbeza Pembahagian boleh dianggap sebagai fail log tambahan pada tahap storan Apabila mesej dilampirkan pada fail log partition, ia akan diberikan offset tertentu.
    • Offset: Offset ialah pengecam unik bagi mesej dalam partition, Kafka menggunakannya untuk memastikan susunan mesej dalam partition Walau bagaimanapun, offset tidak menjangkau partition daripada partition dan bukannya susunan mesej.
    • Replikasi: Replika adalah cara Kafka memastikan ketersediaan data yang tinggi Data Partition Kafka yang sama boleh mempunyai beberapa salinan pada berbilang Broker Biasanya hanya salinan utama yang menyediakan perkhidmatan baca dan tulis luaran terdapat ranap sistem atau kegagalan rangkaian berlaku, Sekali-sekala, Kafka akan memilih semula replika Pemimpin baharu di bawah pengurusan Pengawal untuk menyediakan perkhidmatan baca dan tulis luaran.
    • Rekod: Rekod mesej yang sebenarnya ditulis kepada Kafka dan boleh dibaca. Setiap rekod mengandungi kunci, nilai dan cap masa.

    Kafka Topic Partitions Layout

    Selesai Kafka dari perspektif temu bual
    topic

    Kafka partition Topic, dan partition boleh dibaca dan ditulis serentak.

    Kafka Consumer Offset

    Imbangan pengguna didaftarkan kepada kluster.
    Selesai Kafka dari perspektif temu bual
    Pendaftaran topik: Dalam Kafka, mesej Topik yang sama akan dibahagikan kepada berbilang partition dan diedarkan pada berbilang Broker Maklumat partition ini dan hubungan yang sepadan dengan Broker juga diselenggara oleh Zookeeper

    Pengimbangan beban pengeluar. Memandangkan mesej Topik yang sama akan dibahagikan dan diedarkan pada berbilang Broker, pengeluar perlu menghantar mesej kepada Broker yang diedarkan ini dengan munasabah.

    Pengimbangan beban pengguna: Sama seperti pengeluar, pengguna di Kafka juga memerlukan pengimbangan beban untuk mencapai berbilang pengguna untuk menerima mesej secara munasabah daripada pelayan Broker yang sepadan Setiap kumpulan pengguna mengandungi beberapa pengguna , setiap mesej hanya akan dihantar kepada satu pengguna dalam kumpulan dan kumpulan pengguna yang berbeza menggunakan mesej di bawah Topik khusus mereka sendiri tanpa mengganggu satu sama lain. Selesai Kafka dari perspektif temu bual
    • Kata Kunci Jawapan
    • Bercakap secara ringkas tentang seni bina Kafka?
    • Pengeluar, Pengguna, Kumpulan Pengguna, Topik, Pembahagian

    Adakah mod tolak atau tarik Kafka? Pengeluar Kafka menggunakan mod Tekan untuk menghantar mesej kepada Broker, dan Pengguna menggunakan mod Tarik untuk penggunaan. Mod tarik membolehkan pengguna mengurus offset dengan sendirinya, yang boleh memberikan prestasi baca

    • Bagaimana Kafka menyiarkan mesej?

      Kumpulan pengguna

    • Adakah mesej Kafka teratur?

      Tahap topik tidak tersusun dan Partition ditempah

    • Adakah Kafka menyokong pemisahan baca-tulis?

      Tidak disokong, hanya Leader menyediakan perkhidmatan membaca dan menulis luaran

    • Bagaimanakah Kafka memastikan ketersediaan data yang tinggi?

      Copy, ack, HW

    • Apakah peranan penjaga zoo di Kafka?

      Pengurusan kluster, pengurusan metadata

    • Adakah ia menyokong transaksi?

      Selepas 0.11, transaksi disokong dan boleh dicapai "tepat sekali"

    • Bolehkah bilangan partition dikurangkan?

      Tidak, data akan hilang

    Kafka menggunakan

    Soalan

    • Apakah alat baris arahan untuk Kafka? Mana satu yang telah anda gunakan?
    • Proses pelaksanaan Kafka Producer?
    • Apakah konfigurasi biasa Kafka Producer?
    • Bagaimana untuk memastikan mesej Kafka teratur?
    • Bagaimanakah Pengeluar memastikan data dihantar tanpa kehilangan?
    • Bagaimana untuk meningkatkan prestasi Pengeluar?
    • Jika bilangan pengguna dalam kumpulan yang sama lebih besar daripada bilangan bahagian, bagaimana Kafka mengendalikannya?
    • Adakah benang Pengguna Kafka selamat?
    • Beritahu saya tentang model benang apabila anda menggunakan Kafka Consumer untuk menggunakan mesej Mengapa ia direka seperti ini?
    • Konfigurasi biasa Pengguna Kafka?
    • Bilakah Pengguna akan ditendang keluar daripada kluster?
    • Bagaimanakah reaksi Kafka apabila Pengguna menyertai atau keluar?
    • Apakah Imbangan Semula dan bila Imbangan Semula berlaku?

    Alat baris arahan

    Alat baris arahan Kafka berada dalam direktori /bin pakej Kafka, yang terutamanya termasuk skrip pengurusan perkhidmatan dan kluster, skrip konfigurasi, skrip melihat maklumat, skrip pelanggan, dll. .

    • kafka-configs.sh: skrip pengurusan konfigurasi
    • kafka-console-consumer.sh: konsol pengguna Kafka
    • kafka-console-shiper.sh: konsol pengeluar Kafka
    • kafka-consumer- groups.sh: maklumat berkaitan kumpulan pengguna kafka
    • kafka-delete-records.sh: padam fail log air rendah
    • kafka-log-dirs.sh: maklumat direktori log mesej kafka
    • mirror-maker.sh: alat replikasi gugusan kafka di pusat data berbeza
    • kafka-preferred-replica-election.sh: pencetus pilihan raya replika pilihan
    • kafka-producer-perf-test.sh: ujian prestasi pengeluar kafka skrip
    • kafka-reassign-partitions.sh: skrip penugasan semula partition
    • kafka-replica-verification.sh: skrip pengesahan kemajuan replikasi
    • kafka-server kafka-start.sh: start-start.sh
      kafka-server-stop.sh: Hentikan perkhidmatan kafka
    • kafka-topics.sh: skrip pengurusan topik
    • kafka-verifiable-consumer.sh: Pengguna kafka yang boleh disahkan
    • sh: Pengeluar kafka yang boleh disahkan
    • zookeeper-server-start.sh: Mulakan perkhidmatan zk
    • zookeeper-server-stop.sh: Hentikan perkhidmatan zk

    kafka-console-consumer.shkafka-console-producer.sh脚本来测试 Kafka 生产和消费,kafka-consumer-groups.sh可以查看和管理集群中的 Topic,kafka-topics.sh

    🎜 🎜 zk 🎜 🎜Kami biasanya boleh menggunakan 🎜biasa digunakan untuk melihat status kumpulan pengguna Kafka. 🎜

    Kafka Producer

    Logik pengeluaran biasa pengeluar Kafka termasuk langkah berikut:

    1. Konfigurasikan parameter pelanggan pengeluar untuk contoh pengeluar biasa.
    2. Bina mesej untuk dihantar.
    3. Hantar mesej.
    4. Tutup contoh pengeluar.

    Proses penghantaran mesej pengeluar ditunjukkan dalam rajah di bawah. Ia perlu dihantar kepada Broker secara berkelompok. 拦截器序列化器分区器,最终由累加器

    Selesai Kafka dari perspektif temu bualproducer
    Kafka Producer memerlukan parameter yang diperlukan berikut:

    • bootstrap.server: Nyatakan alamat Broker Kafka
    • siri bersiri

    value .serializer:value Serializer

    • Parameter biasa:

      batch.num.messages
    • Nilai lalai: 200, bilangan mesej dalam setiap kelompok, hanya berfungsi untuk asyc.
    • 🎜🎜🎜permintaan.diperlukan.acks🎜

      Nilai lalai: 0, 0 bermakna pengeluar tidak perlu menunggu pengesahan daripada ketua, 1 bermakna ketua perlu mengesahkan menulis ke log tempatannya dan mengesahkannya dengan segera, -1 bermakna pengeluar perlu mengesahkan selepas semua sandaran selesai. Ia hanya berfungsi dalam mod tak segerak Pelarasan parameter ini adalah pertukaran antara kehilangan data dan kecekapan penghantaran Jika anda tidak sensitif terhadap kehilangan data tetapi mengambil berat tentang kecekapan, anda boleh mempertimbangkan untuk menetapkannya kepada 0, yang boleh meningkatkan kecekapan. pengeluar dalam menghantar data.

    • request.timeout.ms

      Nilai lalai: 10000, pengesahan tamat masa.

    • partitioner.class

      Nilai lalai: kafka.producer.DefaultPartitioner, mesti melaksanakan kafka.producer.Partitioner, sediakan strategi partitioning berdasarkan Key. Kadangkala kami memerlukan jenis mesej yang sama untuk diproses secara berurutan, jadi kami mesti menyesuaikan strategi peruntukan untuk memperuntukkan jenis data yang sama kepada partition yang sama.

    • producer.type

      Nilai lalai: penyegerakan, menentukan sama ada mesej dihantar serentak atau tak segerak. Gunakan kafka.producer.AyncProducer untuk penghantaran batch asyc tak segerak dan kafka.producer.SyncProducer untuk penyegerakan segerak. Penghantaran segerak dan tak segerak juga menjejaskan kecekapan penghasilan mesej.

    • mampatan.topik

      Nilai lalai: tiada, pemampatan mesej, tiada pemampatan secara lalai. Kaedah pemampatan lain termasuk "gzip", "snappy" dan "lz4". Pemampatan mesej boleh mengurangkan jumlah penghantaran rangkaian dan IO rangkaian, sekali gus meningkatkan prestasi keseluruhan.

    • mampat.topik

      Nilai lalai: batal Apabila pemampatan ditetapkan, anda boleh menentukan pemampatan topik tertentu Jika tidak dinyatakan, semua pemampatan akan dilakukan.

    • message.send.max.retries

      Nilai lalai: 3, bilangan maksimum percubaan menghantar mesej.

    • retry.backoff.ms

      Nilai lalai: 300, selang tambahan ditambah pada setiap percubaan.

    • topic.metadata.refresh.interval.ms

      Nilai lalai: 600000, masa untuk mendapatkan metadata dengan kerap. Apabila partition hilang dan ketua tidak tersedia, pengeluar juga akan secara aktif mendapatkan metadata Jika 0, metadata akan diperoleh setiap kali mesej dihantar, yang tidak disyorkan. Jika negatif, metadata hanya akan diambil apabila gagal.

    • queue.buffering.max.ms

      Nilai lalai: 5000, masa maksimum untuk menyimpan data dalam baris gilir pengeluar, hanya untuk asyc.

    • queue.buffering.max.message

      Nilai lalai: 10000, bilangan maksimum mesej yang dicache oleh pengeluar, hanya untuk asyc.

    • queue.enqueue.timeout.ms

      Nilai lalai: -1, 0 dibuang apabila baris gilir penuh, nilai negatif ialah blok apabila baris gilir penuh, nilai positif ialah masa yang sepadan bagi blok apabila baris gilir penuh, hanya untuk asyc.

    Kafka Consumer

    Kafka mempunyai konsep kumpulan pengguna sahaja. jadi jika bilangan pengguna dalam kumpulan pengguna yang sama melebihi bilangan partition, sesetengah pengguna akan diperuntukkan partition yang tidak boleh digunakan. Hubungan antara kumpulan pengguna dan pengguna ditunjukkan dalam rajah di bawah:

    Selesai Kafka dari perspektif temu bual
    kumpulan pengguna

    Kafka Pengguna Pelanggan yang menggunakan mesej biasanya termasuk langkah berikut:

    1. Mengkonfigurasi pelanggan, mencipta pengguna 🜎
      topik
    2. Tarik mesej dan ambil adalah selamat untuk benang, untuk memastikan benang keselamatan, dan meningkatkan Untuk prestasi penggunaan, model benang yang serupa dengan Reaktor boleh digunakan pada sisi Pengguna untuk menggunakan data.
    3. model penggunaan ;jejari sempadan: 4px;margin-kanan: 2px;margin-kiri: 2px;warna latar belakang: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace ;word-break: break-all;color: rgb(0, 150, 136);">format hos:port.
      Selesai Kafka dari perspektif temu bual
      group.id: Kumpulan pengguna yang menjadi milik pengguna.

      key.deserializer: key.serializer sepadan dengan kaedah penyahserialisasian kunci.

      value.deserializer: value.serializersepadan dengan kaedah penyahserialisasian nilai.
    • host:port 格式。
    • group.id:消费者隶属的消费组。
    • key.deserializer:与生产者的key.serializer对应,key 的反序列化方式。
    • value.deserializer:与生产者的value.serializer对应,value 的反序列化方式。
    • session.timeout.ms:coordinator 检测失败的时间。默认 10s 该参数是 Consumer Group 主动检测 (组内成员 comsummer) 崩溃的时间间隔,类似于心跳过期时间。
    • auto.offset.reset:该属性指定了消费者在读取一个没有偏移量后者偏移量无效(消费者长时间失效当前的偏移量已经过时并且被删除了)的分区的情况下,应该作何处理,默认值是 latest,也就是从最新记录读取数据(消费者启动之后生成的记录),另一个值是 earliest,意思是在偏移量无效的情况下,消费者从起始位置开始读取数据。
    • enable.auto.commit:否自动提交位移,如果为false,则需要在程序中手动提交位移。对于精确到一次的语义,最好手动提交位移
    • fetch.max.bytes:单次拉取数据的最大字节数量
    • max.poll.records:单次 poll 调用返回的最大消息数,如果处理逻辑很轻量,可以适当提高该值。但是max.poll.records
      session.timeout.ms: Masa pengesanan penyelaras gagal. Lalai ialah 10s Parameter ini ialah selang masa untuk Kumpulan Pengguna mengesan ranap sistem secara aktif (komputer, ahli kumpulan), serupa dengan masa tamat degupan jantung.
    • 🎜auto.offset.reset: Atribut ini menyatakan bahawa pengguna sedang membaca partition yang tidak mempunyai offset dan offset adalah tidak sah (offset semasa pengguna telah tamat tempoh untuk masa yang lama dan telah tamat tempoh serta dipadamkan) Apakah harus dilakukan dalam kes Atau mula membaca data dari kedudukan permulaan. 🎜🎜🎜🎜enable.auto.commit: Tidak melakukan anjakan secara automatik, jika false, anda perlu menyerahkan anjakan secara manual dalam program. Untuk semantik tepat sekali, lebih baik menyerahkan anjakan secara manual 🎜🎜🎜🎜fetch.max.bytes: Bilangan maksimum bait data yang ditarik dalam satu masa 🎜🎜🎜🎜max.poll.records: Mesej maksimum dikembalikan dengan satu panggilan tinjauan pendapat Jika logik pemprosesan sangat ringan, anda boleh meningkatkan nilai ini dengan sewajarnya. Tetapimax.poll. data rekod perlu diproses dalam session.timeout.ms. Nilai lalai ialah 500🎜🎜🎜🎜request.timeout.ms: masa menunggu maksimum untuk respons permintaan. Jika tiada balasan diterima dalam tempoh tamat masa, Kafka sama ada akan menghantar semula mesej atau terus gagal jika bilangan percubaan semula melebihi.

    Kafka Rebalance

    rebalance pada dasarnya adalah protokol yang menetapkan cara semua pengguna di bawah kumpulan pengguna boleh mencapai persetujuan untuk memperuntukkan setiap partition topik langganan. Sebagai contoh, terdapat 20 pengguna di bawah kumpulan tertentu, dan ia melanggan topik dengan 100 sekatan. Dalam keadaan biasa, Kafka memperuntukkan purata 5 partition kepada setiap pengguna. Proses peruntukan ini dipanggil pengimbangan semula.

    Bila hendak mengimbangi semula?

    Ini juga soalan yang sering disebut. Terdapat tiga syarat pencetus untuk pengimbangan semula:

    • Ahli kumpulan bertukar (pengguna baharu menyertai kumpulan, pengguna sedia ada meninggalkan kumpulan secara sukarela, atau kemalangan pengguna sedia ada - perbezaan antara keduanya akan dibincangkan kemudian)
    • Langgan topik Bilangan partition telah berubah
    • Bilangan partition yang melanggan topik telah berubah

    Bagaimana untuk memperuntukkan partition dalam kumpulan?

    Kafka menyediakan dua strategi peruntukan secara lalai: Julat dan Round-Robin. Sudah tentu, Kafka menggunakan strategi peruntukan boleh pasang dan anda boleh membuat pengalokasi anda sendiri untuk melaksanakan strategi peruntukan yang berbeza.

    Kata Kunci Jawapan

    • Apakah alatan baris arahan untuk Kafka? Mana satu yang telah anda gunakan? /binDirektori, urus kluster kafka, urus topik, hasilkan dan gunakan kafka
    • Proses pelaksanaan Kafka Producer? Pemintas, Pensiri, Pembahagi dan Akumulator
    • Apakah konfigurasi biasa Pengeluar Kafka? Konfigurasi broker, konfigurasi ack, rangkaian dan parameter penghantaran, parameter mampatan, parameter ack
    • Bagaimana untuk memastikan mesej Kafka teratur? Kafka sendiri tidak tersusun pada peringkat topik, dan hanya dipesan pada partition Oleh itu, untuk memastikan susunan pemprosesan, anda boleh menyesuaikan partitioner dan menghantar data yang perlu diproses secara berurutan ke partition yang sama memastikan data dihantar dengan lancar? mekanisme ack, mekanisme cuba semula
    • Bagaimana untuk meningkatkan prestasi Penerbit? Batch, asynchronous, compression
    • Jika bilangan pengguna dalam kumpulan yang sama lebih besar daripada bilangan bahagian, bagaimana Kafka mengendalikannya? Bahagian yang berlebihan akan berada dalam keadaan tidak berguna dan tidak akan menggunakan data
    • Adakah benang Pengguna Kafka selamat? Penggunaan benang tunggal yang tidak selamat, pemprosesan berbilang benang
    • Beritahu saya tentang model benang apabila anda menggunakan Kafka Consumer untuk menggunakan mesej Mengapa ia direka bentuk seperti ini? Pengasingan menarik dan memproses
    • Konfigurasi biasa Pengguna Kafka? broker, rangkaian dan parameter tarik, parameter degupan jantung
    • Bilakah Pengguna akan ditendang keluar daripada kluster? Ranap sistem, keabnormalan rangkaian, masa pemprosesan yang lama, tamat masa anjakan penyerahan
    • Bagaimanakah reaksi Kafka apabila Pengguna menyertai atau keluar? Lakukan Rebalance
    • Apakah Rebalance dan bila Rebalance berlaku? Perubahan topik, perubahan pengguna
    • Ketersediaan dan prestasi tinggi

    Soalan

    Bagaimana Kafka memastikan ketersediaan tinggi?

    • Semantik penyampaian Kafka?
    • Apa yang Replic lakukan?
    • Apa masalahnya AR, ISR?
    • Apakah Pemimpin dan Bunga?
    • Apakah maksud HW, LEO, LSO, LW, dll dalam Kafka?
    • Apakah pemprosesan yang telah Kafka lakukan untuk memastikan prestasi yang unggul?

    Partition and Replica

    Selesai Kafka dari perspektif temu bual
    Partition Replica

    Dalam sistem data teragih, partition biasanya digunakan untuk meningkatkan kapasiti pemprosesan data melalui replika yang tinggi. Multi-partitioning bermaksud keupayaan untuk memproses secara serentak Di antara salinan berbilang ini, hanya satu yang menjadi ketua, dan yang lain adalah salinan pengikut. Hanya salinan pemimpin yang boleh memberikan perkhidmatan kepada dunia luar. Salinan berbilang pengikut biasanya disimpan dalam broker yang berbeza daripada salinan pemimpin. Melalui mekanisme ini, ketersediaan tinggi dicapai Apabila mesin ditutup, salinan pengikut lain boleh dengan cepat "berubah menjadi normal" dan mula menyediakan perkhidmatan kepada dunia luar.

    Kenapa follower copy tidak menyediakan perkhidmatan baca?

    Masalah ini pada asasnya adalah pertukaran antara prestasi dan konsistensi. Cuba bayangkan, apa yang akan berlaku jika salinan pengikut turut memberikan perkhidmatan kepada dunia luar? Pertama sekali, prestasi pasti akan dipertingkatkan. Tetapi pada masa yang sama, beberapa siri masalah akan timbul. Sama seperti bacaan hantu dan bacaan kotor dalam transaksi pangkalan data. Sebagai contoh, jika anda menulis sekeping data ke topik Kafka a, pengguna b menggunakan data daripada topik a, tetapi mendapati ia tidak boleh menggunakannya kerana mesej terkini belum ditulis pada salinan partition yang dibaca oleh pengguna b. Pada masa ini, pengguna lain c boleh menggunakan data terkini kerana ia menggunakan salinan pemimpin. Kafka menggunakan pengurusan WH dan Offset untuk menentukan data yang boleh digunakan oleh Pengguna dan data yang ditulis pada masa ini. . Sudah tentu, salinan pemimpin sentiasa wujud dalam set salinan ISR Dalam beberapa kes khas, terdapat hanya satu salinan pemimpin dalam salinan ISR. Apabila ketua gagal, kakfa merasakan situasi ini melalui zookeeper, memilih salinan baru dalam salinan ISR untuk menjadi ketua, dan memberikan perkhidmatan kepada dunia luar. Tetapi ada masalah lain dengan ini, seperti yang dinyatakan sebelum ini, mungkin hanya ada pemimpin dalam set replika ISR Apabila replika pemimpin mati, set ISR akan menjadi kosong. Pada masa ini, jika parameter unclean.leader.election.enable ditetapkan kepada benar, Kafka akan memilih replika untuk menjadi peneraju dalam asynchronous, iaitu replika yang tiada dalam set replika ISR.

    Selesai Kafka dari perspektif temu bualKewujudan salinan akan menyebabkan masalah penyegerakan salinan

    Kafka mengekalkan senarai replika (ISR) yang tersedia dalam semua replika (AR) yang diperuntukkan Apabila Pengeluar menghantar mesej kepada Broker, ia akan menguruskan penyegerakan data antara bunga dan pemimpin berdasarkan perkhidmatan ack配置来确定需要等待几个副本已经同步了消息才相应成功,Broker 内部会ReplicaManager. .

    Selesai Kafka dari perspektif temu bual
    Prabaca: Kafka akan Digunakan Mesej dibaca ke dalam ingatan terlebih dahulu

    Siri berprestasi tinggi (perduaan)

    Pemetaan memori
    • Pengurusan offset tanpa kunci: Perbaiki model concurrency
    • NI
    • Batch: Batch Baca dan tulis
    • Mampatan: pemampatan mesej, pemampatan storan, kurangkan rangkaian dan overhed IO
    • Konkurensi partition
    • boleh didapati pada mesin yang berbeza , anda boleh menggunakan sepenuhnya kelebihan kluster, Mencapai pemprosesan selari antara mesin. Sebaliknya, memandangkan Partition secara fizikal sepadan dengan folder, walaupun berbilang Partition terletak pada nod yang sama, Partition berbeza pada nod yang sama boleh dikonfigurasikan untuk diletakkan pada pemacu cakera yang berbeza untuk mencapai pemprosesan selari antara cakera Ambil kesempatan sepenuhnya daripada berbilang cakera.
    • Bacaan dan penulisan berurutan
    • Fail Kafka dalam setiap direktori partition dipotong sama rata ke dalam fail data yang sama saiz (saiz fail lalai ialah 500 MB, yang boleh ditetapkan secara manual). Setiap fail data dipanggil fail segmen, dan setiap segmen menggunakan tambah untuk menambah data.
    • Selesai Kafka dari perspektif temu bual
      Tambah data

      Kata Kunci Jawapan

      • Bagaimana Kafka memastikan ketersediaan yang tinggi?

        Gunakan replika untuk memastikan ketersediaan data yang tinggi, ack pengeluar, cuba semula, pemilihan Pemimpin automatik, Pengimbangan diri pengguna

      • Semantik penyampaian Kafka?

        Semantik penyampaian umumnya mempunyai at least onceat most onceexactly once. Kafka melaksanakan dua yang pertama melalui konfigurasi ack.

      • Apa yang Replic lakukan?

        Mencapai ketersediaan data yang tinggi

      • Apakah AR dan ISR?

        AR: Replika Ditugaskan. AR ialah set replika yang diperuntukkan apabila partition dibuat selepas topik dibuat. Bilangan replika ditentukan oleh faktor replika. ISR: Replika Dalam Segerak. Konsep yang sangat penting dalam Kafka merujuk kepada set replika dalam AR yang disegerakkan dengan Pemimpin. Replika dalam AR mungkin bukan dalam ISR, tetapi replika Leader secara semula jadi termasuk dalam ISR. Mengenai ISR, satu lagi soalan temu bual biasa ialah bagaimana untuk menentukan sama ada salinan harus dimiliki oleh ISR. Pertimbangan semasa adalah berdasarkan sama ada masa apabila LEO replika Pengikut ketinggalan di belakang LEO Pemimpin melebihi nilai parameter bahagian Broker replica.lag.time.max.ms. Jika melebihi, replika dikeluarkan daripada ISR.

      • Apakah Pemimpin dan Bunga?

      • Apakah maksud HW di Kafka?

        Tera air tinggi. Ini adalah medan penting yang mengawal skop mesej yang boleh dibaca oleh pengguna. Pengguna biasa hanya boleh "melihat" semua mesej pada replika Pemimpin antara Log Mula Offset dan HW (eksklusif). Mesej di atas paras air tidak dapat dilihat oleh pengguna.

      • Apakah pemprosesan yang telah Kafka lakukan untuk memastikan prestasi yang unggul?

        konkurensi partition, membaca dan menulis secara berurutan ke cakera, pemampatan cache halaman, serialisasi berprestasi tinggi (perduaan), pengurusan offset bebas kunci pemetaan memori, model Java NIO

      Artikel ini tidak termasuk dalam pelaksanaan butiran dan analisis kod sumber Kafka , tetapi Kafka sememangnya merupakan sistem sumber terbuka yang sangat baik keupayaan reka bentuk seni bina, keupayaan pengekodan dan Pengoptimuman prestasi akan sangat membantu.

Atas ialah kandungan terperinci Selesai Kafka dari perspektif temu bual. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:Java后端技术全栈. Jika ada pelanggaran, sila hubungi admin@php.cn Padam