Memahami broker mesej. Mempelajari mekanik pemesejan dengan ActiveMQ dan Kafka. Bab 1

Hello!

Saya mula menterjemah sebuah buku kecil:
Β«Memahami Broker Mesej",
pengarang: Jakub Korab, penerbit: O'Reilly Media, Inc., tarikh diterbitkan: Jun 2017, ISBN: 9781492049296.

Dari pengenalan kepada buku:
"... Buku ini akan mengajar anda cara berfikir tentang sistem pemesejan broker, membandingkan dan membezakan dua teknologi broker popular: Apache ActiveMQ dan Apache Kafka. Ia akan menggariskan kes penggunaan dan insentif pembangunan yang menyebabkan pembangun mereka mengambil pendekatan yang sangat berbeza ke kawasan yang samaβ€”pemesejan antara sistem dengan broker perantaraan. Kami akan melihat teknologi ini dari bawah dan menyerlahkan kesan pelbagai pilihan reka bentuk di sepanjang jalan. Anda akan mendapat pemahaman yang mendalam tentang kedua-dua produk, pemahaman tentang cara ia patut dan tidak patut digunakan, dan pemahaman tentang perkara yang perlu dicari apabila mempertimbangkan teknologi pemesejan lain pada masa hadapan ... "

Bahagian diterjemahkan setakat ini:
Bab 1 Pengenalan
Bab 3. Kafka

Saya akan menyiarkan bab-bab yang telah lengkap kerana ia diterjemahkan.

BAB 1

Pengenalan

Pemesejan sistem-ke-sistem adalah salah satu bidang IT yang paling kurang difahami. Sebagai pembangun atau arkitek, anda mungkin sangat biasa dengan pelbagai rangka kerja dan pangkalan data. Walau bagaimanapun, berkemungkinan anda hanya mempunyai pengetahuan yang luas tentang cara teknologi pemesejan berasaskan broker berfungsi. Jika anda berasa seperti ini, jangan risau, anda berada dalam syarikat yang baik.

Orang biasanya mempunyai hubungan yang sangat terhad dengan infrastruktur pemesejan. Mereka sering menyambung ke sistem yang dibuat lama dahulu, atau memuat turun pengedaran dari Internet, memasangnya dalam PROM dan mula menulis kod untuknya. Selepas menjalankan infrastruktur dalam PROM, hasilnya boleh bercampur-campur: mesej hilang akibat kegagalan, penghantaran tidak berfungsi seperti yang anda jangkakan, atau broker "menggantung" pengeluar anda atau tidak menghantar mesej kepada pengguna anda.

Kedengaran biasa?

Senario biasa ialah kod pemesejan anda berfungsi dengan baik, buat masa ini. Sehingga ia berhenti berfungsi. Tempoh ini meredakan rasa keselamatan yang salah, membawa kepada lebih banyak kod berdasarkan kepercayaan palsu tentang tingkah laku asas teknologi. Apabila perkara mula menjadi salah, anda berhadapan dengan kebenaran yang menyusahkan: bahawa anda tidak benar-benar memahami gelagat asas produk atau pertukaran yang dipilih oleh pengarang, seperti prestasi berbanding kebolehpercayaan, atau transaksi berbanding skala mendatar .

Tanpa pemahaman yang mendalam tentang cara broker berfungsi, orang ramai membuat kenyataan yang kelihatan munasabah tentang sistem pemesejan mereka, seperti:

  • Sistem tidak akan kehilangan mesej
  • Mesej akan diproses secara berurutan
  • Menambah pengguna akan menjadikan sistem lebih pantas
  • Mesej hanya akan dihantar sekali

Malangnya, sesetengah kenyataan ini adalah berdasarkan andaian yang hanya terpakai dalam keadaan tertentu, manakala yang lain adalah tidak betul.

Buku ini akan mengajar anda cara berfikir tentang sistem pemesejan berasaskan broker, membandingkan dan membezakan dua teknologi broker popular: Apache ActiveMQ dan Apache Kafka. Ia akan menggariskan kes penggunaan dan insentif pembangunan yang menyebabkan pembangun mereka mengambil pendekatan yang sangat berbeza ke kawasan yang samaβ€”pemesejan antara sistem dengan broker perantaraan. Kami akan melihat teknologi ini dari bawah dan menyerlahkan kesan pelbagai pilihan reka bentuk di sepanjang jalan. Anda akan mendapat pemahaman yang mendalam tentang kedua-dua produk, pemahaman tentang cara ia patut dan tidak patut digunakan, dan pemahaman tentang perkara yang perlu dicari apabila mempertimbangkan teknologi pemesejan lain pada masa hadapan.

Sebelum kita mula, mari kita pergi ke asas-asas.

Apakah Sistem Mesej dan mengapa ia diperlukan?

Untuk membolehkan dua aplikasi berkomunikasi antara satu sama lain, mereka mesti menentukan antara muka terlebih dahulu. Menentukan antara muka ini melibatkan pemilihan pengangkutan atau protokol, seperti HTTP, MQTT atau SMTP, dan merundingkan format mesej yang akan ditukar antara sistem. Ini mungkin proses yang ketat, seperti mentakrifkan skema XML dengan keperluan kos muatan mesej, atau mungkin lebih kurang formal, seperti perjanjian antara dua pembangun bahawa sesetengah bahagian permintaan HTTP akan mengandungi pengecam klien .

Selagi format mesej dan susunan mesej dihantar adalah konsisten antara sistem, mereka boleh berkomunikasi antara satu sama lain tanpa perlu risau tentang pelaksanaan sistem lain. Bahagian dalaman sistem ini, seperti bahasa pengaturcaraan atau rangka kerja yang digunakan, mungkin berubah dari semasa ke semasa. Selagi kontrak itu sendiri dikekalkan, interaksi boleh diteruskan tanpa perubahan dari pihak lain. Kedua-dua sistem dipisahkan secara berkesan (dipisahkan) oleh antara muka ini.

Sistem pemesejan biasanya melibatkan perantara antara dua sistem yang berinteraksi untuk memisahkan lagi (memisahkan) pengirim daripada penerima atau penerima. Dalam kes ini, sistem pemesejan membenarkan pengirim menghantar mesej tanpa mengetahui di mana penerima berada, sama ada dia aktif atau berapa banyak kejadian yang ada.

Mari lihat beberapa analogi untuk jenis masalah yang diselesaikan oleh sistem pemesejan dan memperkenalkan beberapa istilah asas.

Titik ke Titik

Alexandra pergi ke pejabat pos untuk menghantar bungkusan kepada Adam. Dia pergi ke tingkap dan menyerahkan bungkusan itu kepada pekerja itu. Pekerja itu mengambil bungkusan itu dan memberikan resit kepada Alexandra. Adam tidak perlu berada di rumah apabila bungkusan itu dihantar. Alexandra yakin bungkusan itu akan dihantar kepada Adam pada satu masa nanti dan boleh meneruskan perniagaannya. Kemudian pada satu ketika Adam menerima bungkusan.

Ini adalah contoh model pemesejan titik ke titik. Pejabat pos di sini bertindak sebagai mekanisme pengedaran bungkusan, memastikan setiap bungkusan dihantar sekali. Menggunakan pejabat pos memisahkan tindakan menghantar bungkusan daripada penghantaran bungkusan.
Dalam sistem pemesejan klasik, model titik ke titik dilaksanakan melalui beratur. Barisan gilir bertindak sebagai penimbal FIFO (masuk dahulu, keluar dahulu) yang boleh dilanggan oleh satu atau lebih pengguna. Setiap mesej disampaikan sahaja kepada salah seorang pengguna yang melanggan. Barisan gilir biasanya cuba mengedarkan mesej secara adil di kalangan pengguna. Hanya seorang pengguna akan menerima mesej ini.

Istilah "tahan lama" digunakan pada baris gilir. Kebolehpercayaan ialah sifat perkhidmatan yang memastikan bahawa sistem pemesejan akan mengekalkan mesej tanpa kehadiran pelanggan aktif sehingga pengguna melanggan baris gilir untuk penghantaran mesej.

Kebolehpercayaan sering dikelirukan dengan kegigihan dan walaupun kedua-dua istilah digunakan secara bergantian, ia mempunyai fungsi yang berbeza. Kegigihan menentukan sama ada sistem pemesejan menulis mesej kepada beberapa jenis storan antara menerimanya dan menghantarnya kepada pengguna. Mesej yang dihantar ke baris gilir mungkin berterusan atau tidak.
Pemesejan titik ke titik digunakan apabila kes penggunaan memerlukan tindakan sekali sahaja pada mesej. Contohnya termasuk mendepositkan dana ke dalam akaun atau melengkapkan pesanan penghantaran. Kami akan membincangkan kemudian mengapa sistem pemesejan sendiri tidak dapat menyediakan penghantaran sekali dan mengapa baris gilir boleh memberikan jaminan penghantaran yang terbaik sekurang-kurangnya sekali.

Penerbit-Pelanggan

Gabriella mendail nombor persidangan. Semasa dia disambungkan ke persidangan, dia mendengar semua yang diperkatakan oleh pembesar suara, bersama-sama dengan peserta panggilan yang lain. Apabila dia menala keluar, dia merindui apa yang dikatakan. Apabila disambung semula, dia terus mendengar apa yang diperkatakan.

Ini adalah contoh model pemesejan terbitkan-langgan. Panggilan persidangan bertindak sebagai mekanisme penyiaran. Orang yang bercakap tidak peduli berapa ramai orang sedang dalam panggilan - sistem memastikan bahawa sesiapa yang sedang disambungkan akan mendengar apa yang diperkatakan.
Dalam sistem pemesejan klasik, model pemesejan terbitkan-langganan dilaksanakan melalui bahagian atas. Topik menyediakan kaedah penyiaran yang sama seperti mekanisme persidangan. Apabila mesej dihantar ke topik, ia diedarkan untuk semua pengguna yang melanggan.

Topik biasanya tidak boleh dipercayai (tidak tahan lama). Sama seperti pendengar yang tidak dapat mendengar apa yang dikatakan pada panggilan persidangan apabila pendengar memutuskan sambungan, pelanggan topik terlepas sebarang mesej yang dihantar semasa mereka berada di luar talian. Atas sebab ini, kita boleh mengatakan bahawa topik menyediakan jaminan penghantaran tidak lebih daripada sekali untuk setiap pengguna.

Pemesejan terbitkan-langganan biasanya digunakan apabila mesej bersifat maklumat dan kehilangan satu mesej tidak begitu ketara. Contohnya, topik boleh menghantar bacaan suhu daripada sekumpulan penderia sekali sesaat. Sistem yang berminat dengan suhu semasa dan yang melanggan topik tidak akan bimbang jika ia terlepas mesej - yang lain akan tiba dalam masa terdekat.

model hibrid

Tapak web kedai meletakkan pesanan pesanan dalam "baris gilir mesej". Pengguna utama mesej ini ialah sistem eksekutif. Di samping itu, sistem audit harus mempunyai salinan mesej pesanan ini untuk penjejakan seterusnya. Kedua-dua sistem tidak boleh membenarkan mesej melaluinya, walaupun sistem itu sendiri tidak tersedia untuk beberapa waktu. Laman web seharusnya tidak mengetahui tentang sistem lain.

Kes penggunaan selalunya memerlukan gabungan model pemesejan terbitkan-langganan dan titik-ke-titik, seperti apabila berbilang sistem memerlukan salinan mesej dan kedua-dua kebolehpercayaan dan ketekunan diperlukan untuk mengelakkan kehilangan mesej.

Kes ini memerlukan destinasi (istilah umum untuk baris gilir dan topik) yang mengedarkan mesej pada asasnya sebagai topik, supaya setiap mesej dihantar ke sistem berasingan yang berminat dengan mesej tersebut, tetapi juga di mana setiap sistem boleh menentukan beberapa pengguna yang menerima masuk. mesej, yang lebih seperti baris gilir. Jenis bacaan dalam kes ini ialah sekali untuk setiap pemegang kepentingan. Destinasi hibrid ini selalunya memerlukan ketahanan supaya jika pengguna pergi ke luar talian, mesej yang dihantar pada masa itu diterima selepas pengguna menyambung semula.

Model hibrid bukanlah baharu dan boleh digunakan dalam kebanyakan sistem pemesejan, termasuk ActiveMQ (melalui destinasi maya atau komposit yang menggabungkan topik dan baris gilir) dan Kafka (secara tersirat, sebagai sifat asas reka bentuk destinasinya).

Sekarang setelah kita mempunyai beberapa istilah asas dan pemahaman tentang apa yang boleh kita gunakan sistem pemesejan, mari kita pergi ke butirannya.

Terjemahan selesai: tele.gg/middle_java

Bahagian terjemahan berikut: Bab 3. Kafka

Perlu diteruskan ...

Sumber: www.habr.com

Tambah komen