Selamat petang, Habr! Saya ingin berkongsi buku rujukan buku ilmu yang berjaya saya kumpulkan RabbitMQ dan ringkaskan kepada cadangan dan kesimpulan ringkas.
jadual kandungan
RabbitMQ. Bahagian 1. Pengenalan. Erlang, AMQP dan RPC
RabbitMQ. Bahagian 2. Memahami Pertukaran
RabbitMQ. Bahagian 3. Memahami Baris Gilir dan Ikatan
RabbitMQ. Bahagian 4. Memahami apa itu mesej dan bingkai
RabbitMQ. Bahagian 5: Penerbitan Mesej dan Prestasi Penggunaan
RabbitMQ. Bahagian 6. Kajian semula modul Persekutuan dan Shovel
RabbitMQ. Bahagian 7. Butiran tentang Sambungan dan Chanel
RabbitMQ. Bahagian 8. RabbitMQ dalam .NET
RabbitMQ. Bahagian 9. Pemantauan
Secara ringkas tentang AMQP
AMQP (Advanced Message Qeuing Protocol) ialah protokol terbuka untuk menghantar mesej antara komponen sistem. Idea asas ialah subsistem individu (atau aplikasi bebas) boleh bertukar-tukar mesej secara sewenang-wenangnya melalui broker AMQP, yang melakukan penghalaan, mungkin menjamin penghantaran, mengedarkan aliran data dan melanggan jenis mesej yang dikehendaki.
Protokol AMQP memperkenalkan tiga konsep:
exchange (tempat pertukaran atau pertukaran) - mesej dihantar kepadanya. Titik pertukaran mengedarkan mesej dalam satu atau lebih baris gilir. dia mengarahkan mesej ke baris gilir berdasarkan sambungan yang dibuat (binding) antara dia dan barisan
queue (baris gilir) - struktur data pada cakera atau dalam RAM yang menyimpan pautan kepada mesej dan memberikan salinan mesej consumers (kepada pengguna)
binding (mengikat) - peraturan yang memberitahu titik pertukaran yang mana baris gilir mesej ini harus dimasukkan
Erlang dibangunkan oleh syarikat Ericsson pada pertengahan 1980-an sebagai sistem masa nyata yang diedarkan, tahan terhadap kesalahan, untuk aplikasi yang memerlukan 99,999% masa beroperasi. Erlang digunakan dalam pelbagai industri dan aplikasi moden, cth. WhatsApp. Anda boleh membaca lebih lanjut dalam artikel Seni bina WhatsApp, yang dibeli Facebook dengan harga $19 bilion
Secara ringkas tentang RabbitMQ
RabbitMQ ialah broker mesej sumber terbuka. Ia mengarahkan mesej sepanjang semua prinsip asas protokol AMQP diterangkan dalam spesifikasi. RabbitMQ melaksanakan dan menambah protokol AMQP.
Idea utama model pemesejan dalam RabbitMQ perkara adalah producer (penerbit) tidak menghantar mesej terus ke baris gilir. Malah, dan selalunya, penerbit tidak tahu sama ada mesej itu akan dihantar ke mana-mana baris gilir sama sekali.
Sebaliknya, penerbit hanya boleh menghantar mesej kepada bursa. Di satu pihak, pertukaran menerima mesej daripada penerbit, dan sebaliknya, ia menghantarnya ke baris gilir. Pertukaran mesti tahu dengan tepat apa yang perlu dilakukan dengan mesej yang diterima. Perlukah ia ditambahkan pada baris gilir tertentu? Perlukah ia ditambahkan pada berbilang baris gilir? Atau mesej itu harus diabaikan.
Kerja ringkas RabbitMQ boleh digambarkan seperti berikut:
Penerbit menghantar mesej kepada pertukaran tertentu
Pertukaran, setelah menerima mesej, mengarahkannya ke satu atau lebih baris gilir mengikut peraturan yang mengikat antaranya dan baris gilir
Baris gilir menyimpan rujukan kepada mesej ini. Mesej itu sendiri disimpan dalam RAM atau pada cakera
Setelah pengguna bersedia untuk menerima mesej daripada baris gilir, pelayan mencipta salinan mesej melalui pautan dan menghantar
Pengguna menerima mesej dan menghantar pengesahan kepada broker
Broker, setelah menerima pengesahan, mengeluarkan salinan mesej daripada baris gilir. Kemudian padam dari RAM dan cakera
RPC
proses RPC (panggilan prosedur jauh) mendasari hampir semua interaksi dengan nukleus RabbitMQ. Contohnya, perbincangan awal tentang syarat pelanggan dengan RabbitMQ, menunjukkan proses tertentu RPC. Setelah urutan ini selesai, RabbitMQ akan bersedia untuk menerima permintaan daripada pelanggan:
Juga dalam spesifikasi AMQP kedua-dua pelanggan dan pelayan boleh mengeluarkan arahan. Ini bermakna pelanggan sedang menunggu untuk berkomunikasi dengan pelayan. Perintah adalah kelas dan kaedah. Sebagai contoh, Connection.Start β panggilan kaedah Start kelas Connection.
Sambungan dan saluran
Untuk pertukaran maklumat sedemikian antara pelanggan dan pelayan, saluran. Saluran dibuat dalam sambungan tertentu. Setiap saluran diasingkan daripada saluran lain. Dalam kes segerak, tidak mungkin untuk melaksanakan arahan seterusnya sehingga respons diterima.
Untuk dapat menghantar arahan secara selari, anda perlu membuka beberapa saluran. Setiap saluran mencipta saluran yang berasingan Erlang proses. Satu sambungan boleh mempunyai berbilang saluran (pemultipleksan). Untuk setiap saluran terdapat struktur dan objek tertentu dalam ingatan. Oleh itu, semakin banyak saluran yang terdapat dalam satu sambungan, semakin banyak saluran RabbitMQ menggunakan lebih banyak memori untuk menguruskan sambungan sedemikian.
Contoh mudah untuk membuat sambungan dan menggunakan saluran RabbitMQ.Pelanggan:
Membuka sambungan baharu untuk setiap operasi adalah sangat tidak digalakkan kerana ini akan menyebabkan kos yang tinggi. Saluran juga harus berterusan, tetapi banyak ralat protokol menyebabkan saluran ditutup, jadi jangka hayat saluran mungkin lebih pendek daripada sambungan.
Di manakah RabbitMQ digunakan?
Dalam konteks perkhidmatan mikro, protokol AMQP dan pelaksanaannya dalam RabbitMQ sering digunakan untuk interaksi tak segerak antara perkhidmatan.
Dalam konteks IIOT protokol AMQP dan pelaksanaannya dalam RabbitMQ digunakan untuk pertukaran data antara pelayan (server-server). Juga gunakan pemalam Pemalam MQTT RabbitMQ yang merupakan pelaksanaan protokol MQTT untuk menghantar data antara penderia dan pelayan dalam persekitaran berkelajuan rendah dan kependaman tinggi (senarai penuh protokol yang disokong disenaraikan di laman web projek).
Dalam artikel seterusnya kita akan mula memahami Pertukaran dengan lebih terperinci.