Dengan peningkatan dalam keperluan perniagaan, pemprosesan mesej masa nyata telah menjadi salah satu keperluan perniagaan yang penting bagi banyak perusahaan. Apache Kafka ialah sistem pemesejan teragih berskala tinggi, ketersediaan tinggi dan berprestasi tinggi yang sesuai untuk pemprosesan mesej masa nyata berskala besar. Dalam pembangunan API Java, menggunakan Kafka untuk pemprosesan mesej masa nyata membolehkan penghantaran dan pemprosesan data yang cekap.
Artikel ini akan memperkenalkan cara menggunakan Apache Kafka untuk pemprosesan mesej masa nyata dalam pembangunan API Java. Pertama, pengetahuan asas dan konsep penting Kafka akan diperkenalkan. Kemudian, kami akan menerangkan secara terperinci cara menggunakan Kafka dalam pembangunan API Java.
1. Pengenalan kepada Apache Kafka
Apache Kafka ialah sistem pemesejan yang dibangunkan oleh LinkedIn yang boleh digunakan untuk menyelesaikan masalah pemprosesan maklumat masa nyata berskala besar. Kafka dicirikan oleh daya pemprosesan yang tinggi, kependaman rendah, kebolehpercayaan tinggi, skalabiliti dan toleransi kesalahan. Ia direka bentuk sebagai sistem teragih, di mana berbilang pengeluar boleh menghantar mesej kepada satu atau lebih topik, dan berbilang pengguna boleh menggunakan mesej daripada satu atau lebih topik. Pada masa yang sama, Kafka memproses data dengan daya pemprosesan yang sangat tinggi dan boleh menyimpan dan memproses aliran data masa nyata pada skala besar.
Dalam Kafka, mesej disusun mengikut topik dan partition. Topik secara logiknya serupa dengan jenis mesej dalam aplikasi, dan partition ialah subbahagian topik Setiap partition ialah baris gilir mesej. Dengan cara ini, mesej diedarkan kepada partition topik, dan pengimbangan beban dan toleransi kesalahan boleh dicapai melalui pembahagian.
2. Konsep asas Apache Kafka
Sekumpulan Kafka terdiri daripada berbilang Broker, dan setiap Broker ialah pelayan Kafka. Broker menerima mesej daripada Pengeluar dan menghantarnya kepada Pengguna Broker juga bertanggungjawab untuk menyimpan mesej dalam partition topik.
Topik ialah konsep logik yang digunakan untuk mengenal pasti kategori mesej yang dihasilkan oleh Penerbit. Setiap Topik boleh dibahagikan kepada berbilang Partition, dan setiap Partition boleh berada dalam Broker yang berbeza.
Partition ialah sub-partition dalam topik Kafka, dan mesej dalam setiap Partition disusun.
Producer ialah pengeluar yang boleh digunakan untuk menghantar data kepada Broker gugusan Kafka Pada masa yang sama, Producer boleh memilih untuk menghantar mesej kepada Partition tertentu.
Pengguna ialah pengguna yang menggunakan mesej pada Broker gugusan Kafka. Berbilang Pengguna boleh menggunakan mesej dalam partition Topik yang sama untuk mencapai pengimbangan beban mesej.
ID Kumpulan digunakan untuk mengenal pasti kumpulan yang menjadi milik Pengguna Pengguna dalam kumpulan yang sama boleh bersama-sama menggunakan mesej dalam satu atau lebih sekatan Topik. Hanya seorang Pengguna dalam kumpulan boleh menggunakan mesej dalam partition Topik.
Offset ialah offset yang digunakan untuk mengenal pasti mesej yang telah digunakan oleh Pengguna. Kafka menggunakan Offset untuk memastikan susunan mesej.
3. Menggunakan Apache Kafka dalam pembangunan API Java
Dalam pembangunan API Java, kami boleh menggunakan API Java Kafka untuk pemprosesan mesej masa nyata. Mula-mula, kita perlu memperkenalkan pakej balang API Java Kafka ke dalam program, dan kemudian menulis kod Java.
Dalam API Java, kita boleh menggunakan kelas KafkaProducer untuk menghantar mesej kepada Broker gugusan Kafka. Berikut ialah kod pelaksanaan pengeluar mudah:
Properties props = new Properties(); props.put("bootstrap.servers", "localhost:9092"); props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); KafkaProducer<String, String> producer = new KafkaProducer<String, String>(props); ProducerRecord<String, String> record = new ProducerRecord<String, String>("mytopic", "key", "value"); producer.send(record); producer.close();
Dalam kod di atas, kami mula-mula membina objek KafkaProducer, tetapkan alamat Broker gugusan Kafka, dan kemudian tetapkan kaedah siri Kunci dan Nilai bagi mesej masing-masing . Akhirnya, rekod pengeluar (ProducerRecord) dibuat dan dihantar ke gugusan Kafka.
Dalam API Java, kita boleh menggunakan kelas KafkaConsumer untuk menggunakan mesej daripada gugusan Kafka. Berikut ialah kod pelaksanaan pengguna yang mudah:
Properties props = new Properties(); props.put("bootstrap.servers", "localhost:9092"); props.put("group.id", "mygroup"); props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); KafkaConsumer<String, String> consumer = new KafkaConsumer<String, String>(props); List<String> topics = new ArrayList<String>(); topics.add("mytopic"); consumer.subscribe(topics); while (true) { ConsumerRecords<String, String> records = consumer.poll(1000); for (ConsumerRecord<String, String> record : records) System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value()); }
Dalam kod di atas, kami mula-mula membina objek KafkaConsumer dan menetapkan alamat Broker gugusan Kafka, ID Kumpulan dan kaedah penyahserikatan Kunci dan Nilai bagi mesej. Kemudian tentukan Topik dan langgan Topik, dan akhirnya gunakan kaedah tinjauan pendapat() untuk menggunakan mesej daripada gugusan Kafka.
4. Ringkasan
Artikel ini memperkenalkan konsep asas Apache Kafka dan kaedah menggunakan Kafka untuk pemprosesan mesej masa nyata dalam pembangunan API Java. Dalam pembangunan sebenar, kita boleh memilih konfigurasi dan kaedah pembangunan Kafka yang sesuai berdasarkan keperluan perniagaan sebenar. Kafka dicirikan oleh daya pemprosesan yang tinggi, kependaman rendah, kebolehpercayaan yang tinggi, skalabiliti dan toleransi kesalahan Ia mempunyai kelebihan yang jelas dalam pemprosesan maklumat masa nyata berskala besar. Saya harap artikel ini akan membantu semua orang.
Atas ialah kandungan terperinci Menggunakan Apache Kafka untuk pemprosesan mesej masa nyata dalam pembangunan API Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!