Pengenalan kepada Hazelcast Jet

1. Pengenalan

Dalam tutorial ini, kita akan belajar mengenai Hazelcast Jet. Ini adalah mesin pemprosesan data diedarkan yang disediakan oleh Hazelcast, Inc. dan dibina di atas Hazelcast IMDG.

Sekiranya anda ingin mengetahui mengenai Hazelcast IMDG, berikut adalah artikel untuk memulakan.

2. Apakah Jet Hazelcast?

Hazelcast Jet adalah mesin pemprosesan data diedarkan yang memperlakukan data sebagai aliran. Ia dapat memproses data yang disimpan dalam pangkalan data atau fail serta data yang dialirkan oleh pelayan Kafka.

Lebih-lebih lagi, ia dapat melakukan fungsi agregat berbanding aliran data yang tidak terbatas dengan membahagikan aliran menjadi subset dan menerapkan agregasi pada setiap subset. Konsep ini dikenali sebagai penggulungan dalam terminologi Jet.

Kami dapat menggunakan Jet dalam sekumpulan mesin dan kemudian menyerahkan tugas pemprosesan data kami kepadanya. Jet akan menjadikan semua anggota kluster memproses data secara automatik. Setiap anggota kluster menggunakan sebagian data, dan itu memudahkan untuk meningkatkan hingga ke tingkat throughput apa pun.

Berikut adalah kes penggunaan biasa untuk Hazelcast Jet:

  • Pemprosesan Aliran Masa Nyata
  • Pemprosesan Kumpulan Cepat
  • Memproses Java 8 Stream dengan cara yang diedarkan
  • Pemprosesan data dalam Perkhidmatan Mikro

3. Persediaan

Untuk menyediakan Hazelcast Jet di persekitaran kita, kita hanya perlu menambahkan satu pergantungan Maven ke pom.xml kita .

Inilah cara kami melakukannya:

 com.hazelcast.jet hazelcast-jet 4.2 

Termasuk kebergantungan ini akan memuat turun fail balang 10 Mb yang memberi kita semua infrastruktur yang kita perlukan untuk membina saluran pemprosesan data yang diedarkan.

Versi terbaru untuk Hazelcast Jet boleh didapati di sini.

4. Contoh Permohonan

Untuk mengetahui lebih lanjut mengenai Hazelcast Jet, kami akan membuat contoh aplikasi yang memerlukan input ayat dan perkataan untuk dijumpai dalam ayat-ayat tersebut dan mengembalikan jumlah perkataan yang ditentukan dalam ayat-ayat tersebut.

4.1. Saluran Paip

Saluran paip membentuk konstruk asas untuk aplikasi Jet. Pemprosesan dalam perancangan mengikuti langkah-langkah berikut:

  • membaca data dari sumber
  • mengubah data
  • tulis data ke sinki

Untuk permohonan kami, perancangan akan dibaca dari teragih Senarai , memohon transformasi kumpulan dan pengumpulan dan akhirnya menulis kepada diedarkan Peta .

Inilah cara kami menulis saluran paip kami:

private Pipeline createPipeLine() { Pipeline p = Pipeline.create(); p.readFrom(Sources.list(LIST_NAME)) .flatMap(word -> traverseArray(word.toLowerCase().split("\\W+"))) .filter(word -> !word.isEmpty()) .groupingKey(wholeItem()) .aggregate(counting()) .writeTo(Sinks.map(MAP_NAME)); return p; }

Setelah membaca dari sumbernya, kami melintasi data dan membaginya di seluruh ruang dengan menggunakan ungkapan biasa. Selepas itu, kami menyaring kekosongan.

Akhirnya, kami mengumpulkan perkataan, mengagregatnya dan menuliskan hasilnya ke Peta.

4.2. Kerja

Sekarang saluran paip kami ditentukan, kami membuat tugas untuk melaksanakan saluran paip.

Inilah cara kami menulis fungsi countWord yang menerima parameter dan mengembalikan kiraan:

public Long countWord(List sentences, String word) { long count = 0; JetInstance jet = Jet.newJetInstance(); try { List textList = jet.getList(LIST_NAME); textList.addAll(sentences); Pipeline p = createPipeLine(); jet.newJob(p).join(); Map counts = jet.getMap(MAP_NAME); count = counts.get(word); } finally { Jet.shutdownAll(); } return count; }

Kami membuat contoh Jet terlebih dahulu untuk membuat pekerjaan kami dan menggunakan saluran paip. Seterusnya, kami menyalin Senarai input ke senarai yang diedarkan sehingga tersedia di semua keadaan.

Kami kemudian menghantar pekerjaan menggunakan saluran paip yang telah kami bina di atas. Kaedah newJob () mengembalikan pekerjaan yang boleh dilaksanakan yang dimulakan oleh Jet secara tidak segerak. Yang menyertai menunggu kaedah untuk kerja untuk lengkap dan melemparkan satu pengecualian jika kerja itu selesai dengan ralat.

Apabila tugas selesai, hasilnya akan diambil dalam Peta yang diedarkan , seperti yang kami tentukan dalam perancangan kami. Oleh itu, kami mendapat Peta dari contoh Jet dan mendapat penghitungan kata yang menentangnya.

Terakhir, kami menutup contoh Jet. Penting untuk mematikannya setelah pelaksanaan kami berakhir, kerana Jet instance memulakan utasnya sendiri . Jika tidak, proses Java kita akan tetap hidup walaupun kaedah kita telah keluar.

Berikut adalah ujian unit yang menguji kod yang telah kami tulis untuk Jet:

@Test public void whenGivenSentencesAndWord_ThenReturnCountOfWord() { List sentences = new ArrayList(); sentences.add("The first second was alright, but the second second was tough."); WordCounter wordCounter = new WordCounter(); long countSecond = wordCounter.countWord(sentences, "second"); assertEquals(3, countSecond); }

5. Kesimpulan

Dalam artikel ini, kami telah mengetahui mengenai Hazelcast Jet. Untuk mengetahui lebih lanjut mengenainya dan ciri-cirinya, rujuk manual.

Seperti biasa, kod untuk contoh yang digunakan dalam artikel ini boleh didapati di Github.