Memilih pengiriman berbasis pesan dengan antrean

Selesai

Misalkan Anda merencanakan arsitektur untuk aplikasi berbagi musik Anda. Anda ingin memastikan bahwa file musik diunggah ke API web dengan andal dari aplikasi seluler. Anda kemudian ingin menyampaikan detail tentang lagu baru langsung ke aplikasi saat artis menambahkan musik baru ke koleksi mereka. Skenario ini adalah penggunaan sempurna dari sistem berbasis pesan, dan Azure menawarkan dua solusi untuk masalah ini:

  • Azure Queue Storage
  • Azure Service Bus

Apa itu Azure Queue Storage?

Penyimpanan antrean adalah layanan yang menggunakan Azure Storage untuk menyimpan sejumlah besar pesan yang dapat diakses dengan aman dari mana saja di dunia menggunakan antarmuka berbasis REST sederhana. Antrean dapat berisi jutaan pesan, hanya dibatasi oleh kapasitas akun penyimpanan yang memilikinya.

Apa itu Antrean Azure Service Bus?

Bus Layanan adalah sistem broker pesan yang ditujukan untuk aplikasi perusahaan. Aplikasi ini sering menggunakan beberapa protokol komunikasi, memiliki kontrak data yang berbeda dan persyaratan keamanan yang lebih tinggi, dan dapat mencakup layanan cloud dan lokal. Service Bus dibangun di atas infrastruktur Olahpesan khusus yang dirancang untuk skenario ini.

Kedua layanan ini didasarkan pada gagasan antrean, memegang pesan terkirim sampai target siap untuk menerimanya.

Apa itu Topik Azure Service Bus?

Topik Azure Service Bus seperti antrean, tetapi dapat memiliki beberapa pelanggan. Ketika pesan dikirim ke topik alih-alih antrean, beberapa komponen dapat dipicu untuk melakukan pekerjaan mereka. Bayangkan pengguna mendengarkan lagu di aplikasi berbagi musik. Aplikasi seluler mungkin mengirim pesan ke topik "Didengarkan". Topik tersebut akan memiliki langganan untuk "UpdateUserListenHistory" dan langganan yang berbeda untuk "UpdateArtistsFanList". Masing-masing fungsi tersebut ditangani oleh komponen berbeda yang menerima salinan pesannya sendiri.

Secara internal, topik menggunakan antrean. Saat Anda memposting ke topik, pesan disalin dan dijatuhkan ke dalam antrean untuk setiap langganan. Antrean berarti bahwa salinan pesan tetap ada untuk diproses oleh setiap cabang langganan meskipun komponen yang memproses langganan tersebut terlalu sibuk untuk mengikuti.

Manfaat antrean

Infrastruktur antrean dapat mendukung banyak fitur canggih yang membuatnya berguna dengan cara berikut:

Peningkatan keandalan

Antrean digunakan oleh aplikasi terdistribusi sebagai lokasi penyimpanan sementara untuk pesan yang menunggu pengiriman ke komponen tujuan. Komponen sumber dapat menambahkan pesan ke antrean dan komponen tujuan dapat mengambil pesan di bagian depan antrian untuk diproses. Antrean meningkatkan keandalan pertukaran pesan karena, pada saat permintaan tinggi, pesan dapat menunggu sampai komponen tujuan siap untuk memprosesnya.

Jaminan pengiriman pesan

Sistem antrian biasanya menjamin pengiriman setiap pesan dalam antrean ke komponen tujuan. Namun, jaminan ini dapat mengambil pendekatan yang berbeda:

  • At-Least-Once Delivery (Pengiriman Setidaknya Sekali): Dalam pendekatan ini, setiap pesan dijamin pengiriman ke setidaknya salah satu komponen yang mengambil pesan dari antrean. Namun, perhatikan bahwa dalam keadaan tertentu, ada kemungkinan bahwa pesan yang sama dapat dikirimkan lebih dari sekali. Misalnya, jika ada dua contoh instants aplikasi web yang mengambil pesan dari antrean, biasanya setiap pesan hanya masuk ke salah satu instans tersebut. Namun, jika satu instans membutuhkan waktu lama untuk memproses pesan dan waktu habis kedaluwarsa, pesan juga dapat dikirim ke instans lain. Kode aplikasi web Anda harus dirancang dengan mempertimbangkan kemungkinan ini.

  • Pengiriman Paling Banyak Sekali: Dalam pendekatan ini, setiap pesan tidak dijamin untuk pengiriman, dan ada kemungkinan kecil bahwa pesan mungkin tidak tiba. Namun, tidak seperti pengiriman At-Least-Once, tidak ada kemungkinan pesan akan dikirimkan dua kali. Ini kadang-kadang disebut sebagai deteksi duplikat otomatis.

  • First-In-First-Out (FIFO): Di sebagian besar sistem Olahpesan, pesan biasanya meninggalkan antrean dalam urutan yang sama di mana mereka ditambahkan, tetapi Anda harus mempertimbangkan apakah pengiriman ini dijamin. Jika aplikasi terdistribusi Anda mengharuskan pesan diproses tepat dalam urutan yang benar, Anda harus memilih sistem antrean yang mencakup jaminan FIFO.

Dukungan transaksional

Beberapa grup pesan yang terkait erat dapat menyebabkan masalah saat pengiriman gagal untuk satu pesan dalam grup.

Misalnya, pertimbangkan aplikasi e-commerce. Saat pengguna memilih tombol Beli , serangkaian pesan mungkin dihasilkan dan dikirim ke berbagai tujuan pemrosesan:

  • Pesan dengan detail pesanan dikirim ke pusat pemenuhan
  • Pesan dengan total dan detail pembayaran dikirim ke pemroses kartu kredit
  • Pesan dengan informasi tanda terima dikirim ke database untuk membuat faktur bagi pelanggan

Dalam hal ini, kami ingin memastikan semua pesan diproses, atau tidak ada yang diproses. Kami tidak akan berbisnis lama jika pesan kartu kredit tidak dikirimkan dan semua pesanan kami terpenuhi tanpa pembayaran! Anda dapat menghindari masalah semacam ini dengan mengelompokkan dua pesan ke dalam satu transaksi. Transaksi pesan berhasil atau gagal sebagai satu unit, sama seperti di dunia database. Jika pengiriman pesan detail kartu kredit gagal, begitu juga pesan detail pesanan.

Layanan mana yang sebaiknya Anda pilih?

Setelah memahami bahwa strategi komunikasi untuk arsitektur ini harus menjadi pesan, Anda harus memilih apakah akan menggunakan antrean Azure Storage atau Azure Bus Layanan. Anda dapat menggunakan kedua teknologi untuk menyimpan dan mengirimkan pesan di antara komponen Anda. Masing-masing memiliki set fitur yang sedikit berbeda, yang berarti Anda dapat memilih satu atau yang lain, atau menggunakan keduanya, tergantung pada masalah yang Anda selesaikan.

Gunakan antrean Service Bus jika Anda:

  • Perlu jaminan pengiriman At-Most-Once (paling banyak sekali).
  • Butuh jaminan FIFO.
  • Perlu mengelompokkan pesan ke dalam transaksi.
  • Ingin menerima pesan tanpa polling antrean.
  • Perlu menyediakan model akses berbasis peran ke antrean.
  • Perlu menangani pesan yang lebih besar dari 64 KB tetapi kurang dari 100 MB. Ukuran pesan maksimum yang didukung oleh tingkat standar adalah 256 KB dan tingkat premium adalah 100 MB.
  • Ukuran antrean tidak akan tumbuh lebih besar dari 1 TB. Ukuran antrean maksimum untuk tingkat standar adalah 80 GB dan untuk tingkat premium adalah 1 TB.
  • Ingin mempublikasikan dan mengonsumsi kumpulan pesan.

Gunakan topik Service Bus jika Anda:

  • Perlu semua fitur yang disediakan oleh antrean Bus Layanan, dan selain itu menerapkan pola pub-sub di mana pesan dapat dirutekan ke salah satu dari beberapa langganan, masing-masing dengan penerima independennya sendiri

Penyimpanan antrean tidak cukup kaya fitur, tetapi jika Anda tidak memerlukan fitur tersebut, itu bisa menjadi pilihan yang lebih sederhana. Selain itu, ini adalah solusi terbaik jika aplikasi Anda memiliki salah satu persyaratan berikut.

Gunakan penyimpanan Antrean jika Anda:

  • Perlu jejak audit semua pesan yang melewati antrean.
  • Harapkan antrean melebihi ukuran 1 TB.
  • Ingin melacak kemajuan untuk memproses pesan di dalam antrean.

Antrean adalah lokasi penyimpanan sementara yang sederhana untuk pesan yang dikirim di antara komponen aplikasi terdistribusi. Gunakan antrean untuk mengatur pesan dan menangani lonjakan permintaan yang tidak dapat diprediksi.

Gunakan antrean Storage saat Anda menginginkan sistem antrean yang sederhana dan mudah dikodekan. Untuk kebutuhan yang lebih canggih, gunakan antrean Service Bus. Jika Anda memiliki beberapa tujuan untuk satu pesan, tetapi memerlukan perilaku seperti antrean, gunakan topik Service Bus.