Terjemahan
Pesan adalah bagian mendasar dari setiap sistem terdistribusi. Ini memungkinkan produsen untuk mengirim pesan ke sejumlah konsumen, dan tidak perlu mengetahui informasi apa pun tentang konsumen. Ini sangat membantu untuk komunikasi yang benar-benar asinkron dan decoupling.
Saat Anda menggunakan RabbitMQ, diagram di atas menunjukkan struktur yang sangat mendasar tetapi khas. Produser mengirim pesan ke sakelar. Menurut logika perutean, sakelar menempatkan pesan ke dalam antrean yang terikat ke sakelar. Lebih khusus lagi, jika itu adalah sakelar jenis siaran, salinan pesan ini akan dikirim ke setiap antrean berulang kali. Konsumen kemudian dapat menerima dan memproses pesan.
Asumsi penting agar struktur di atas bekerja dengan sukses bagi produsen dan konsumen adalah bahwa semua komponen RabbitMQ (yaitu antrian, sakelar, dan pengikatan) harus dibuat terlebih dahulu. Konsumen tidak dapat mengirim pesan ke sakelar Jika sakelar tidak ada, konsumen tidak dapat memproses pesan dari antrean yang tidak ada.
Oleh karena itu, tidak sulit untuk memahami bahwa sebelum produsen/konsumen mengirim/menerima pesan, biarkan nilai produsen/konsumen membuat hubungan antrean, sakelar, dan pengikatan. Mari kita lihat kelebihan dan kekurangan dari setiap cara.
1. Membedakan tanggung jawab
Terjemahan gambar (1. Produsen membuat sakelar 2. Konsumen membuat antrean dan mengikat antrean ke sakelar)
Agar produsen dan konsumen dapat sepenuhnya terpisah, idealnya, produsen hanya mengetahui informasi tentang sakelar (bukan antrian), dan konsumen hanya tahu tentang antrian (bukan sakelar). Hubungan pengikatan menunjukkan hubungan antara sakelar dan antrean
Salah satu cara yang mungkin adalah dengan meminta produsen menangani pembuatan sakelar, dan konsumen membuat antrean dan mengikat antrean ke sakelar. Keuntungan dari metode decouplement ini adalah jika konsumen membutuhkan antrian, hanya perlu membuat antrian dan mengikatnya sesuai dengan permintaan, dan produsen tidak perlu mengetahui informasi apa pun tentang antrian. Tetapi ini bukan pemisahan yang cukup: karena konsumen harus mengetahui sakelar untuk mengikatnya.
2. Produsen menciptakan segalanya
Saat produsen berjalan, itu dapat dikonfigurasi untuk membuat semua komponen yang diperlukan (sakelar, antrean, dan pengikatan). Keuntungan dari pendekatan ini adalah tidak ada pesan yang hilang (karena antrean sudah dibuat dan terikat ke sakelar, dan tidak ada konsumen yang perlu memulainya terlebih dahulu).
Namun, ini berarti bahwa produsen harus mengetahui semua antrean yang perlu diikat ke sakelar. Ini adalah cara yang sangat digabungkan. Alasannya adalah bahwa setiap kali antrean baru perlu ditambahkan, produsen harus mengkonfigurasi ulang dan menyebarkan untuk membuat dan mengikat antrean
3. Konsumen menciptakan segalanya
Kebalikannya adalah membiarkan konsumen membuat sakelar, antrean, dan pengikatan yang dibutuhkannya saat berjalan. Seperti pada pendekatan sebelumnya, metode ini menghasilkan kopling karena konsumen harus mengetahui informasi tentang sakelar yang terikat ke antrian. Setiap perubahan pada sakelar (seperti penggantian nama) berarti bahwa semua konsumen harus dikonfigurasi ulang dan disebarkan. Ketika ada antrian besar dan konsumen, kompleksitas ini bisa menjadi penghalang.
4. Tidak ada yang menciptakan apa pun
Pendekatan yang sama sekali berbeda adalah baik produsen maupun konsumen untuk membuat komponen yang diperlukan. Sebagai gantinya, itu dibuat menggunakan antarmuka pengguna plugin admin atau CLI admin sebelumnya. Metode ini didasarkan pada keunggulan berikut:
- Produsen dan konsumen dapat benar-benar dipisahkan. Produsen hanya tahu pertukaran, dan konsumen hanya tahu antrian.
- Ini dapat dengan mudah dibuat dan diotomatisasi sebagai bagian dari alur penyebaran
- Setiap perubahan, seperti antrean baru, dapat ditambahkan tanpa menyentuh penayang, dan konsumen yang ada dan disebarkan
ringkasan
Dalam sistem terdistribusi, pesan asinkron adalah cara yang berguna untuk memisahkan, tetapi untuk menjaganya tetap dipisahkan, perlu untuk mempertahankan strategi yang efektif untuk mempertahankan struktur pesan yang mendasarinya (di RabbitMQ, ini adalah antrean, sakelar, dan pengikatan).
Meskipun penerbit dan layanan konsumen mungkin bertanggung jawab untuk membuat apa yang mereka butuhkan sendiri, mereka dapat mahal dalam hal kehilangan pesan awal, kopling, dan pemeliharaan operasional (dalam hal konfigurasi dan penerapan).
Mungkin cara terbaik untuk menangani konfigurasi sistem perpesanan di tempat yang seharusnya: menulis skrip di luar aplikasi. Ini memastikan bahwa layanan tetap dipisahkan dan sistem antrean dapat berubah secara dinamis sesuai kebutuhan tanpa memengaruhi sejumlah besar layanan yang ada.
Asli:Login hyperlink terlihat. Bahasa Inggris Asli:Login hyperlink terlihat.
|