Rumah Java javaTutorial Bina aplikasi pemprosesan strim menggunakan Spring Boot dan Apache Kafka Streams

Bina aplikasi pemprosesan strim menggunakan Spring Boot dan Apache Kafka Streams

Jun 23, 2023 am 08:32 AM
spring boot Pemprosesan aliran apache kafka

Dengan kemunculan era data besar, semakin banyak perusahaan mula memberi perhatian kepada teknologi pemprosesan aliran untuk memenuhi keperluan pemprosesan dan analisis data masa nyata. Apache Kafka ialah sistem baris gilir mesej teragih berkemampuan tinggi dan berskala yang telah menjadi standard de facto dalam bidang pemprosesan strim. Spring Boot ialah alat untuk membangunkan aplikasi Spring dengan cepat, yang boleh membantu kami membina aplikasi pemprosesan strim dengan lebih pantas dan lebih mudah. Artikel ini akan memperkenalkan cara membina aplikasi pemprosesan strim menggunakan Spring Boot dan Apache Kafka Streams, dan membincangkan kelebihan dan kekurangan kedua-dua alatan ini dan cara mengoptimumkan prestasi aplikasi.

  1. Buat topik Kafka

Sebelum kita mula membina aplikasi, kita perlu mencipta topik Kafka dahulu. Dalam artikel ini, kami akan mencipta topik yang dipanggil "klik pengguna" yang akan menyimpan peristiwa klik pengguna di tapak web.

Laksanakan arahan berikut dalam baris arahan:

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic user-clicks
Salin selepas log masuk

Ini akan mencipta topik bernama "klik pengguna" pada pelayan Kafka dengan hanya satu partition dan salinan setempat .

  1. Mencipta aplikasi Spring Boot

Seterusnya, kami akan mencipta aplikasi asas menggunakan Spring Boot. Dalam Spring Boot, kita boleh menggunakan Spring Initializr untuk mencipta aplikasi asas dengan cepat. Semasa membuat aplikasi, pastikan anda memilih kebergantungan berikut:

  • Spring Kafka
  • Spring Web

Selepas mencipta aplikasi, kami akan Menambah pergantungan berikut:

<dependency>
   <groupId>org.apache.kafka</groupId>
   <artifactId>kafka-streams</artifactId>
   <version>2.6.0</version>
</dependency>
Salin selepas log masuk

Ini akan memberikan kami API pemprosesan aliran Kafka.

  1. Melaksanakan pemprosesan strim Kafka

Sekarang kita boleh mula menulis kod pemprosesan strim Kafka. Semasa membuat aplikasi, kami menentukan kelas pengawal yang dipanggil "Pengontrol Pengguna". Sekarang kami akan menambah pengendali permintaan POST bernama "klik" dalam kelas pengawal. Pengendali ini akan mendapatkan peristiwa klik pengguna daripada permintaan POST dan menghantarnya ke topik Kafka bernama "klik pengguna". Kodnya adalah seperti berikut:

@RestController
public class UserController {

   private final KafkaTemplate<String, String> kafkaTemplate;

   @Autowired
   public UserController(KafkaTemplate<String, String> kafkaTemplate) {
       this.kafkaTemplate = kafkaTemplate;
   }

   @PostMapping("/clicks")
   public void clicks(@RequestBody String click) {
       kafkaTemplate.send("user-clicks", click);
   }
}
Salin selepas log masuk

Dalam kod di atas, kami menggunakan fungsi suntikan kebergantungan Spring untuk menyuntik objek KafkaTemplate bernama "kafkaTemplate". Objek ini boleh digunakan untuk menghantar mesej kepada topik Kafka.

  1. Cipta Topologi Penstriman Kafka

Seterusnya, kami akan mencipta Topologi Penstriman Kafka untuk mengendalikan acara klik yang diterima daripada topik "klik pengguna". Dalam contoh kami, kami akan menggunakan API Aliran Kafka untuk melaksanakan topologi pemprosesan aliran.

Dalam aplikasi Spring Boot, kami akan mencipta kelas yang dipanggil "UserClicksStream" yang akan menggunakan API Kafka Streams untuk mengendalikan acara klik. Kodnya adalah seperti berikut:

@Configuration
@EnableKafkaStreams
public class UserClicksStream {

   @Value("${spring.kafka.bootstrap-servers}")
   private String bootstrapServers;

   @Bean
   public KStream<String, String> kStream(StreamsBuilder builder) {

       KStream<String, String> stream = builder.stream("user-clicks");

       stream.foreach((key, value) -> {
           System.out.println("Received: " + value);
       });

       return stream;
   }

   @Bean
   public KafkaStreams kafkaStreams(StreamsBuilder builder) {
       Properties props = new Properties();
       props.put(StreamsConfig.APPLICATION_ID_CONFIG, "user-clicks-stream");
       props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
       return new KafkaStreams(builder.build(), props);
   }
}
Salin selepas log masuk

Dalam kod di atas, kami menggunakan fungsi suntikan kebergantungan Spring untuk menyuntik objek StreamsBuilder bernama "StreamsBuilder". Objek ini digunakan untuk mencipta topologi pemprosesan aliran Kafka.

Dalam kaedah kStream, kami mencipta objek KStream daripada topik "klik pengguna" dan mencetak acara yang diterima menggunakan kaedah foreach. froeach ialah operasi terminal yang akan kami gunakan dalam langkah seterusnya.

Dalam kaedah kafkaStreams, kami mencipta aplikasi bernama "user-clicks-stream" dan menentukan alamat pelayan Kafka. Aplikasi ini secara automatik akan melaksanakan operasi pemprosesan strim yang kami takrifkan dalam topologi sebelumnya.

  1. Jalankan aplikasi

Sekarang kami telah menulis semua kod untuk aplikasi itu. Sebelum menjalankan aplikasi, kita perlu memulakan pelayan Kafka.

Laksanakan arahan berikut dalam baris arahan:

bin/kafka-server-start.sh config/server.properties
Salin selepas log masuk

Ini akan memulakan pelayan Kafka. Sekarang kita boleh mulakan permohonan kita.

Laksanakan arahan berikut dalam baris arahan:

mvn spring-boot:run
Salin selepas log masuk

Ini akan melancarkan aplikasi kami. Kini kami boleh menghantar permintaan POST kepada aplikasi menggunakan mana-mana klien HTTP seperti cURL atau Postman. Setiap permintaan akan menjana acara klik dan mencetaknya dalam konsol.

Jika kami ingin melaksanakan lebih banyak operasi dalam topologi (seperti pengagregatan, pengiraan tetingkap, dll.), kami boleh menggunakan operasi lain yang disediakan oleh API Aliran Kafka untuk membina topologi.

  1. Ringkasan

Membina aplikasi pemprosesan strim menggunakan Spring Boot dan Apache Kafka Streams ialah cara yang pantas dan mudah untuk membantu kami memproses data masa nyata dengan lebih mudah. Walau bagaimanapun, kita perlu memberi perhatian kepada beberapa isu prestasi pengoptimuman, seperti reka bentuk topologi, saiz penimbal, masa pemprosesan aliran, dsb. Dengan memahami isu ini, kami boleh membina aplikasi pemprosesan strim yang cekap dengan lebih baik.

Atas ialah kandungan terperinci Bina aplikasi pemprosesan strim menggunakan Spring Boot dan Apache Kafka Streams. 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)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
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)

Spring Boot+MyBatis+Atomikos+MySQL (dengan kod sumber) Spring Boot+MyBatis+Atomikos+MySQL (dengan kod sumber) Aug 15, 2023 pm 04:12 PM

Dalam projek sebenar, kami cuba mengelakkan transaksi yang diedarkan. Walau bagaimanapun, kadangkala ia benar-benar perlu untuk melakukan beberapa pemisahan perkhidmatan, yang akan membawa kepada masalah transaksi yang diedarkan. Pada masa yang sama, transaksi yang diedarkan juga ditanya di pasaran semasa temu bual Anda boleh berlatih dengan kes ini, dan anda boleh bercakap tentang 123 dalam temu bual.

Mencapai sokongan berbilang bahasa dan aplikasi antarabangsa melalui Spring Boot Mencapai sokongan berbilang bahasa dan aplikasi antarabangsa melalui Spring Boot Jun 23, 2023 am 09:09 AM

Dengan perkembangan globalisasi, semakin banyak laman web dan aplikasi perlu menyediakan sokongan berbilang bahasa dan fungsi pengantarabangsaan. Bagi pembangun, melaksanakan fungsi ini bukanlah tugas yang mudah kerana ia memerlukan pertimbangan dari banyak aspek, seperti terjemahan bahasa, tarikh, masa dan format mata wang, dsb. Walau bagaimanapun, menggunakan rangka kerja SpringBoot, kami boleh melaksanakan sokongan berbilang bahasa dan aplikasi antarabangsa dengan mudah. Mula-mula, marilah kita memahami antara muka LocaleResolver yang disediakan oleh SpringBoot. Loc

Cara menggunakan Spring Boot untuk membina aplikasi pemprosesan data besar Cara menggunakan Spring Boot untuk membina aplikasi pemprosesan data besar Jun 23, 2023 am 09:07 AM

Dengan kemunculan era data besar, semakin banyak syarikat mula memahami dan mengiktiraf nilai data besar dan menerapkannya dalam perniagaan. Masalah yang datang dengannya ialah bagaimana mengendalikan aliran data yang besar ini. Dalam kes ini, aplikasi pemprosesan data besar telah menjadi sesuatu yang mesti dipertimbangkan oleh setiap perusahaan. Bagi pembangun, cara menggunakan SpringBoot untuk membina aplikasi pemprosesan data besar yang cekap juga merupakan isu yang sangat penting. SpringBoot ialah rangka kerja Java yang sangat popular yang membolehkan

Bina sistem ESB menggunakan Spring Boot dan Apache ServiceMix Bina sistem ESB menggunakan Spring Boot dan Apache ServiceMix Jun 22, 2023 pm 12:30 PM

Memandangkan perniagaan moden semakin bergantung pada pelbagai aplikasi dan sistem yang berbeza, integrasi perusahaan menjadi lebih penting. Bas Perkhidmatan Perusahaan (ESB) ialah model seni bina integrasi yang menghubungkan sistem dan aplikasi yang berbeza bersama-sama untuk menyediakan pertukaran data biasa dan perkhidmatan penghalaan mesej untuk mencapai penyepaduan aplikasi peringkat perusahaan. Menggunakan SpringBoot dan ApacheServiceMix, kami boleh membina sistem ESB dengan mudah Artikel ini akan memperkenalkan cara melaksanakannya. SpringBoot dan A

Laksanakan pemetaan ORM berdasarkan Spring Boot dan MyBatis Plus Laksanakan pemetaan ORM berdasarkan Spring Boot dan MyBatis Plus Jun 22, 2023 pm 09:27 PM

Dalam proses pembangunan aplikasi web Java, teknologi pemetaan ORM (Object-RelationalMapping) digunakan untuk memetakan data hubungan dalam pangkalan data kepada objek Java, menjadikannya mudah untuk pembangun mengakses dan mengendalikan data. SpringBoot, sebagai salah satu rangka kerja pembangunan web Java yang paling popular pada masa ini, telah menyediakan cara untuk mengintegrasikan MyBatis, dan MyBatisPlus ialah rangka kerja ORM yang dilanjutkan berdasarkan MyBatis.

Penyepaduan dan penggunaan pangkalan data Spring Boot dan NoSQL Penyepaduan dan penggunaan pangkalan data Spring Boot dan NoSQL Jun 22, 2023 pm 10:34 PM

Dengan perkembangan Internet, analisis data besar dan pemprosesan maklumat masa nyata telah menjadi keperluan penting bagi perusahaan. Untuk memenuhi keperluan tersebut, pangkalan data hubungan tradisional tidak lagi memenuhi keperluan pembangunan perniagaan dan teknologi. Sebaliknya, menggunakan pangkalan data NoSQL telah menjadi pilihan penting. Dalam artikel ini, kita akan membincangkan penggunaan SpringBoot yang disepadukan dengan pangkalan data NoSQL untuk membolehkan pembangunan dan penggunaan aplikasi moden. Apakah pangkalan data NoSQL?

Spring Boot melaksanakan teknologi pemisahan baca-tulis MySQL Spring Boot melaksanakan teknologi pemisahan baca-tulis MySQL Aug 15, 2023 pm 04:52 PM

Bagaimana untuk mencapai pemisahan baca-tulis, projek Spring Boot, pangkalan data adalah MySQL, dan lapisan kegigihan menggunakan MyBatis.

Cara menggunakan Java untuk membangunkan aplikasi analisis data masa nyata berdasarkan Apache Kafka Cara menggunakan Java untuk membangunkan aplikasi analisis data masa nyata berdasarkan Apache Kafka Sep 20, 2023 am 08:21 AM

Cara menggunakan Java untuk membangunkan aplikasi analisis data masa nyata berdasarkan Apache Kafka Dengan perkembangan pesat data besar, aplikasi analisis data masa nyata telah menjadi bahagian yang amat diperlukan dalam perusahaan. Apache Kafka, sebagai sistem baris gilir mesej teragih yang paling popular pada masa ini, menyediakan sokongan yang kuat untuk pengumpulan dan pemprosesan data masa nyata. Artikel ini akan membawa pembaca mempelajari cara menggunakan Java untuk membangunkan aplikasi analisis data masa nyata berdasarkan Apache Kafka, dan melampirkan contoh kod tertentu. Sediakan

See all articles