Rumah Java javaTutorial Pemahaman mendalam tentang mekanisme pelaksanaan asas baris gilir mesej Kafka

Pemahaman mendalam tentang mekanisme pelaksanaan asas baris gilir mesej Kafka

Feb 01, 2024 am 08:15 AM
baris gilir mesej kafka Prinsip pelaksanaan aplikasi java

. Kafka pada asalnya dibangunkan oleh LinkedIn dan kini merupakan projek peringkat tertinggi Yayasan Perisian Apache.

Pemahaman mendalam tentang mekanisme pelaksanaan asas baris gilir mesej Kafka

Senibina

Kafka ialah sistem teragih yang terdiri daripada berbilang pelayan. Setiap pelayan dipanggil nod, dan setiap nod adalah proses bebas. Nod disambungkan melalui rangkaian untuk membentuk kelompok.

Data dalam gugusan Kafka disimpan dalam partition, dan setiap partition ialah fail log tidak boleh ubah yang teratur. Partition ialah unit asas storan data Kafka dan unit asas Kafka untuk replikasi dan failover data. Data dalam kelompok Kafka diakses oleh pengeluar dan pengguna. Pengeluar menulis data ke gugusan Kafka, dan pengguna membaca data daripada gugusan Kafka.

Storan Data

Data dalam Kafka disimpan dalam partition, dan setiap partition ialah fail log yang teratur dan tidak boleh diubah. Partition ialah unit asas storan data Kafka dan unit asas Kafka untuk replikasi dan failover data.

Setiap partition mempunyai ID unik dan terdiri daripada nod pendahulu dan berbilang nod replika. Nod pemimpin bertanggungjawab untuk menulis data ke partition, dan nod replika bertanggungjawab untuk menyalin data daripada nod ketua.

Apabila pengeluar menulis data ke gugusan Kafka, data akan ditulis ke nod ketua. Nod pemimpin akan mereplikasi data ke nod replika. Apabila pengguna membaca data daripada gugusan Kafka, data itu dibaca daripada nod replika.

Replikasi data

Replikasi data dalam Kafka dicapai melalui mekanisme penyalinan. Setiap partition mempunyai nod ketua dan berbilang nod replika. Nod pemimpin bertanggungjawab untuk menulis data ke partition, dan nod replika bertanggungjawab untuk menyalin data daripada nod ketua.

Apabila nod ketua gagal, salah satu nod replika menjadi nod ketua baharu. Nod pemimpin baharu akan terus menulis data ke partition dan menyalin data daripada nod replika lain.

Mekanisme replikasi data dalam Kafka boleh memastikan kebolehpercayaan dan ketersediaan data. Walaupun nod pemimpin gagal, data tidak hilang dan pengguna masih boleh membaca data daripada gugusan Kafka.

Failover

Failover dalam Kafka dilaksanakan melalui mekanisme replika. Apabila nod pemimpin gagal, salah satu nod replika menjadi nod pemimpin baharu. Nod pemimpin baharu akan terus menulis data ke partition dan menyalin data daripada nod replika lain.

Mekanisme failover dalam Kafka memastikan kebolehpercayaan dan ketersediaan data. Walaupun nod pemimpin gagal, data tidak hilang dan pengguna masih boleh membaca data daripada gugusan Kafka.

Pengeluar

Pengeluar ialah pelanggan yang menulis data ke gugusan Kafka. Pengeluar boleh menjadi mana-mana pelanggan yang boleh menghantar permintaan HTTP, seperti aplikasi Java, aplikasi Python atau aplikasi C++. Apabila pengeluar menulis data ke gugusan Kafka, ia perlu menentukan partition yang hendak ditulis. Pengeluar boleh memilih untuk menulis data ke partition tertentu atau menulis data ke partition rawak.

Pengeluar juga boleh menentukan kunci mesej dan nilai mesej data. Kekunci mesej digunakan untuk mengenal pasti secara unik mesej, dan nilai mesej ialah kandungan sebenar mesej itu.

Pengguna

Pengguna ialah pelanggan yang membaca data daripada gugusan Kafka. Pengguna boleh menjadi mana-mana pelanggan yang boleh menerima permintaan HTTP, seperti aplikasi Java, aplikasi Python atau aplikasi C++.

Apabila pengguna membaca data daripada gugusan Kafka, mereka perlu menentukan partition untuk dibaca. Pengguna boleh memilih untuk membaca data daripada partition tertentu atau daripada semua partition.

Pengguna juga boleh menentukan offset untuk dibaca. Offset digunakan untuk mengenal pasti secara unik mesej dalam partition. Pengguna boleh memilih untuk mula membaca data daripada offset tertentu atau mula membaca data daripada offset terkini.

Senario aplikasi

Kafka boleh digunakan dalam pelbagai senario aplikasi, seperti:

Pengumpulan log: Kafka boleh digunakan untuk mengumpul dan menyimpan data log daripada sistem yang berbeza.

Analisis data: Kafka boleh digunakan untuk mengumpul dan menyimpan data daripada sistem yang berbeza, dan kemudian menganalisis data.

Pemprosesan strim: Kafka boleh digunakan untuk memproses aliran data daripada sistem yang berbeza.

Seni bina dipacu acara: Kafka boleh digunakan untuk melaksanakan seni bina dipacu acara.

Contoh Kod
  • Berikut ialah contoh pengeluar Kafka yang ditulis dalam Java:
  • import org.apache.kafka.clients.producer.KafkaProducer;
    import org.apache.kafka.clients.producer.ProducerConfig;
    import org.apache.kafka.clients.producer.ProducerRecord;
    
    import java.util.Properties;
    
    public class KafkaProducerExample {
    
        public static void main(String[] args) {
            // Create a Kafka producer
            Properties properties = new Properties();
            properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
            properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
            properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
            KafkaProducer<String, String> producer = new KafkaProducer<>(properties);
    
            // Create a Kafka record
            ProducerRecord<String, String> record = new ProducerRecord<>("my-topic", "hello, world");
    
            // Send the record to Kafka
            producer.send(record);
    
            // Close the producer
            producer.close();
        }
    }
    Salin selepas log masuk
  • Berikut ialah contoh pengguna Kafka yang ditulis dalam Java:
  • import org.apache.kafka.clients.consumer.ConsumerConfig;
    import org.apache.kafka.clients.consumer.ConsumerRecord;
    import org.apache.kafka.clients.consumer.ConsumerRecords;
    import org.apache.kafka.clients.consumer.KafkaConsumer;
    
    import java.util.Collections;
    import java.util.Properties;
    
    public class KafkaConsumerExample {
    
        public static void main(String[] args) {
            // Create a Kafka consumer
            Properties properties = new Properties();
            properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
            properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
            properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
            properties.put(ConsumerConfig.GROUP_ID_CONFIG, "my-group");
            KafkaConsumer<String, String> consumer = new KafkaConsumer<>(properties);
    
            // Subscribe to a topic
            consumer.subscribe(Collections.singletonList("my-topic"));
    
            // Poll for new records
            while (true) {
                ConsumerRecords<String, String> records = consumer.poll(100);
    
                for (ConsumerRecord<String, String> record : records) {
                    System.out.println(record.key() + ": " + record.value());
                }
            }
    
            // Close the consumer
            consumer.close();
        }
    }
    Salin selepas log masuk

Atas ialah kandungan terperinci Pemahaman mendalam tentang mekanisme pelaksanaan asas baris gilir mesej Kafka. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cadangan emulator Java: Kelima-lima ini mudah digunakan dan praktikal! Cadangan emulator Java: Kelima-lima ini mudah digunakan dan praktikal! Feb 22, 2024 pm 08:42 PM

Emulator Java ialah perisian yang boleh menjalankan aplikasi Java pada komputer atau peranti. Ia boleh mensimulasikan mesin maya Java dan melaksanakan Java bytecode, membolehkan pengguna menjalankan program Java pada platform yang berbeza. Simulator Java digunakan secara meluas dalam pembangunan perisian, pembelajaran dan ujian. Artikel ini akan memperkenalkan lima emulator Java yang berguna dan praktikal yang boleh memenuhi keperluan pengguna yang berbeza dan membantu pengguna membangun dan menjalankan program Java dengan lebih cekap. Emulator pertama ialah Eclipse. Ecl

Cara Memasang Java pada Debian 12: Panduan Langkah demi Langkah Cara Memasang Java pada Debian 12: Panduan Langkah demi Langkah Mar 20, 2024 pm 03:40 PM

Java ialah bahasa pengaturcaraan berkuasa yang membolehkan pengguna mencipta pelbagai aplikasi, seperti membina permainan, mencipta aplikasi web dan mereka bentuk sistem terbenam. Debian12 ialah sistem pengendalian berasaskan Linux yang baru dikeluarkan yang berkuasa yang menyediakan asas yang stabil dan boleh dipercayai untuk aplikasi Java berkembang. Bersama-sama dengan sistem Java dan Debian, anda boleh membuka dunia kemungkinan dan inovasi yang pasti boleh banyak membantu orang ramai. Ini hanya boleh dilakukan jika Java dipasang pada sistem Debian anda. Dalam panduan ini, anda akan belajar: Bagaimana untuk memasang Java pada Debian12 Bagaimana untuk memasang Java pada Debian12 Bagaimana untuk mengalih keluar Java daripada Debian12

Rangka kerja ujian unit JUnit: kelebihan dan had penggunaannya Rangka kerja ujian unit JUnit: kelebihan dan had penggunaannya Apr 18, 2024 pm 09:18 PM

Rangka kerja ujian unit JUnit ialah alat yang digunakan secara meluas yang kelebihan utamanya termasuk ujian automatik, maklum balas pantas, kualiti kod yang dipertingkatkan dan mudah alih. Tetapi ia juga mempunyai had, termasuk skop terhad, kos penyelenggaraan, kebergantungan, penggunaan memori dan kekurangan sokongan integrasi berterusan. Untuk ujian unit aplikasi Java, JUnit ialah rangka kerja berkuasa yang menawarkan banyak faedah, tetapi batasannya perlu dipertimbangkan apabila menggunakannya.

Panduan Penggunaan API Oracle: Meneroka Teknologi Antaramuka Data Panduan Penggunaan API Oracle: Meneroka Teknologi Antaramuka Data Mar 07, 2024 am 11:12 AM

Oracle ialah penyedia sistem pengurusan pangkalan data yang terkenal di dunia, dan APInya (Antara Muka Pengaturcaraan Aplikasi) ialah alat berkuasa yang membantu pembangun berinteraksi dan menyepadukan dengan mudah dengan pangkalan data Oracle. Dalam artikel ini, kami akan menyelidiki panduan penggunaan API Oracle, menunjukkan kepada pembaca cara menggunakan teknologi antara muka data semasa proses pembangunan dan menyediakan contoh kod khusus. 1. Oracle

Bagaimana untuk memasang Apache Kafka pada Rocky Linux? Bagaimana untuk memasang Apache Kafka pada Rocky Linux? Mar 01, 2024 pm 10:37 PM

Untuk memasang ApacheKafka pada RockyLinux, anda boleh mengikuti langkah di bawah: Kemas kini sistem: Pertama, pastikan sistem RockyLinux anda dikemas kini, laksanakan arahan berikut untuk mengemas kini pakej sistem: sudoyumupdate Pasang Java: ApacheKafka bergantung pada Java, jadi anda perlu memasang Java Development Kit (JDK) terlebih dahulu ). OpenJDK boleh dipasang melalui arahan berikut: sudoyuminstalljava-1.8.0-openjdk-devel Muat turun dan nyahmampat: Lawati laman web rasmi ApacheKafka () untuk memuat turun pakej binari terkini. Pilih versi yang stabil

Bermula dengan JMX: Terokai asas pemantauan dan pengurusan Java Bermula dengan JMX: Terokai asas pemantauan dan pengurusan Java Feb 20, 2024 pm 09:06 PM

Apa itu JMX? JMX (Pemantauan dan Pengurusan Java) ialah rangka kerja standard yang membolehkan anda memantau dan mengurus aplikasi Java dan sumbernya. Ia menyediakan API bersatu untuk mengakses dan memanipulasi metadata dan sifat prestasi aplikasi. MBean: Pengurusan BeanMBean (Management Bean) ialah konsep teras dalam JMX Ia merangkumi sebahagian daripada aplikasi yang boleh dipantau dan diurus. MBeans mempunyai sifat (boleh dibaca atau boleh ditulis) dan operasi (kaedah) yang digunakan untuk mengakses keadaan aplikasi dan melaksanakan operasi. MXBean: Sambungan pengurusan BeanMXBean ialah lanjutan MBean, yang menyediakan fungsi pemantauan dan pengurusan yang lebih maju. MXBeans ditakrifkan oleh spesifikasi JMX dan telah dipratentukan

Sambungkan Java ke pangkalan data MySQL Sambungkan Java ke pangkalan data MySQL Feb 22, 2024 pm 12:58 PM

Bagaimana untuk menyambung ke pangkalan data mysql menggunakan java? Apabila saya mencuba, saya mendapat java.sql.sqlexception:nosuitabledriverfoundforjdbc:mysql://database/tableatjava.sql.drivermanager.getconnection(drivermanager.java:689)atjava.sql.drivermanager.getconnection(drivermanager.java:247) atau

Rahsia Java JNDI dan Integrasi Spring: Mendedahkan Kerjasama Lancar Java JNDI dan Rangka Kerja Spring Rahsia Java JNDI dan Integrasi Spring: Mendedahkan Kerjasama Lancar Java JNDI dan Rangka Kerja Spring Feb 25, 2024 pm 01:10 PM

Kelebihan menyepadukan JavaJNDI dengan spring Penyepaduan JavaJNDI dengan kerangka Spring mempunyai banyak kelebihan, termasuk: Memudahkan penggunaan JNDI: Spring menyediakan lapisan abstraksi yang memudahkan penggunaan JNDI tanpa menulis kod JNDI yang kompleks. Pengurusan berpusat sumber JNDI: Spring boleh mengurus sumber JNDI secara berpusat untuk carian dan pengurusan yang mudah. Menyokong berbilang pelaksanaan JNDI: Spring menyokong berbilang pelaksanaan JNDI, termasuk JNDI, JNP, RMI, dsb. Mengintegrasikan rangka kerja Spring dengan lancar: Spring disepadukan dengan sangat rapat dengan JNDI dan disepadukan dengan lancar dengan rangka kerja Spring. Bagaimana untuk mengintegrasikan JavaJNDI dengan rangka kerja Spring untuk mengintegrasikan Ja

See all articles