Pola terbitkan-berlangganan - AWS Bimbingan Preskriptif

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pola terbitkan-berlangganan

Niat

Pola berlangganan publikasi, yang juga dikenal sebagai pola pub-sub, adalah pola pesan yang memisahkan pengirim pesan (penerbit) dari penerima yang tertarik (pelanggan). Pola ini mengimplementasikan komunikasi asinkron dengan menerbitkan pesan atau peristiwa melalui perantara yang dikenal sebagai broker pesan atau router (infrastruktur pesan). Pola publish-subscribe meningkatkan skalabilitas dan responsif bagi pengirim dengan menurunkan tanggung jawab pengiriman pesan ke infrastruktur pesan, sehingga pengirim dapat fokus pada pemrosesan pesan inti.

Motivasi

Dalam arsitektur terdistribusi, komponen sistem sering perlu memberikan informasi ke komponen lain karena peristiwa terjadi di dalam sistem. Pola publish-subscribe memisahkan kekhawatiran sehingga aplikasi dapat fokus pada kemampuan inti mereka sementara infrastruktur pesan menangani tanggung jawab komunikasi seperti routing pesan dan pengiriman yang andal. Pola berlangganan publikasi memungkinkan pesan asinkron untuk memisahkan penerbit dan pelanggan. Penerbit juga dapat mengirim pesan tanpa sepengetahuan pelanggan.

Penerapan

Gunakan pola berlangganan publikasi saat:

  • Pemrosesan paralel diperlukan jika satu pesan memiliki alur kerja yang berbeda.

  • Menyiarkan pesan ke beberapa pelanggan dan tanggapan real-time dari penerima tidak diperlukan.

  • Sistem atau aplikasi dapat mentolerir konsistensi akhirnya untuk data atau status.

  • Aplikasi atau komponen harus berkomunikasi dengan aplikasi atau layanan lain yang mungkin menggunakan bahasa, protokol, atau platform yang berbeda.

Masalah dan pertimbangan

  • Ketersediaan pelanggan: Penerbit tidak mengetahui apakah pelanggan mendengarkan, dan mereka mungkin tidak. Pesan yang dipublikasikan bersifat sementara dan dapat mengakibatkan dijatuhkan jika pelanggan tidak tersedia.

  • Jaminan pengiriman pesan: Biasanya, pola berlangganan publikasi tidak dapat menjamin pengiriman pesan ke semua jenis pelanggan, meskipun layanan tertentu seperti Amazon Simple Notification Service (Amazon SNS) dapat memberikan pengiriman tepat sekali ke beberapa subset pelanggan.

  • Time to live (TTL): Pesan memiliki masa pakai dan kedaluwarsa jika tidak diproses dalam jangka waktu tersebut. Pertimbangkan untuk menambahkan pesan yang dipublikasikan ke antrian sehingga dapat bertahan, dan menjamin pemrosesan di luar periode TTL.

  • Relevansi pesan: Produsen dapat menetapkan rentang waktu untuk relevansi sebagai bagian dari data pesan, dan pesan dapat dibuang setelah tanggal ini. Pertimbangkan merancang konsumen untuk memeriksa informasi ini sebelum Anda memutuskan bagaimana memproses pesan.

  • Konsistensi akhir: Ada penundaan antara waktu pesan diterbitkan dan waktu yang dikonsumsi oleh pelanggan. Hal ini dapat mengakibatkan penyimpanan data pelanggan menjadi konsisten ketika konsistensi yang kuat diperlukan. Konsistensi akhirnya mungkin juga menjadi masalah ketika produsen dan konsumen membutuhkan interaksi yang hampir real time.

  • Komunikasi searah: Pola berlangganan penerbitan dianggap searah. Aplikasi yang memerlukan pesan dua arah dengan saluran langganan kembali harus mempertimbangkan untuk menggunakan pola permintaan-balasan jika diperlukan respons sinkron.

  • Urutan pesan: Pemesanan pesan tidak dijamin. Jika konsumen memerlukan pesan yang dipesan, kami sarankan Anda menggunakan topik Amazon SNS FIFO untuk menjamin pemesanan.

  • Duplikasi pesan: Berdasarkan infrastruktur pesan, pesan duplikat dapat dikirimkan ke konsumen. Konsumen harus dirancang untuk menjadi idempoten untuk menangani pemrosesan pesan duplikat. Atau, gunakan topik Amazon SNS FIFO untuk menjamin pengiriman tepat sekali.

  • Pemfilteran pesan: Konsumen seringkali hanya tertarik pada subset pesan yang diterbitkan oleh produser. Menyediakan mekanisme untuk memungkinkan pelanggan memfilter atau mempersempit pesan yang mereka terima dengan menyediakan topik atau filter konten.

  • Pemutaran ulang pesan: Kemampuan pemutaran ulang pesan mungkin bergantung pada infrastruktur pesan. Anda juga dapat memberikan implementasi khusus tergantung pada kasus penggunaan.

  • Antrian surat mati: Dalam sistem pos, kantor surat mati adalah fasilitas untuk memproses surat yang tidak terkirim. Di pub/sub messaging, antrian dead-letter (DLQ) adalah antrian untuk pesan yang tidak dapat dikirim ke titik akhir berlangganan.

Implementasi

Arsitektur tingkat tinggi

Dalam pola berlangganan publikasi, subsistem pesan asinkron yang dikenal sebagai broker pesan atau router melacak langganan. Ketika produser menerbitkan sebuah acara, infrastruktur pesan mengirimkan pesan ke setiap konsumen. Setelah pesan dikirim ke pelanggan, pesan tersebut dihapus dari infrastruktur pesan sehingga tidak dapat diputar ulang, dan pelanggan baru tidak melihat acara tersebut. Broker pesan atau router memisahkan produsen acara dari konsumen pesan dengan:

  • Menyediakan saluran input bagi produser untuk mempublikasikan peristiwa yang dikemas ke dalam pesan, menggunakan format pesan yang ditentukan.

  • Membuat saluran keluaran individual per langganan. Langganan adalah koneksi konsumen, di mana mereka mendengarkan pesan acara yang terkait dengan saluran input tertentu.

  • Menyalin pesan dari saluran input ke saluran output untuk semua konsumen saat acara dipublikasikan.

Implementasi menggunakan layanan AWS

Amazon SNS

Amazon SNS adalah layanan penerbit-pelanggan yang dikelola sepenuhnya yang menyediakan pesan application-to-application (A2A) untuk memisahkan aplikasi terdistribusi. Ini juga menyediakan pesan application-to-person (A2P) untuk mengirim SMS, email, dan pemberitahuan push lainnya.

Amazon SNS menyediakan dua jenis topik: standar dan first in, first out (FIFO).

  • Topik standar mendukung jumlah pesan yang tidak terbatas per detik, dan memberikan pemesanan dan deduplikasi upaya terbaik.

  • Topik FIFO menyediakan urutan dan deduplikasi yang ketat, dan mendukung hingga 300 pesan per detik atau 10 MB per detik per topik FIFO (mana yang lebih dulu).

    Topik FIFO di Amazon SNS

Ilustrasi berikut menunjukkan bagaimana Anda dapat menggunakan Amazon SNS untuk menerapkan pola berlangganan publikasi. Setelah pengguna melakukan pembayaran, pesan SNS dikirim oleh fungsi Payments Lambda ke Payments topik SNS. Topik SNS ini memiliki tiga pelanggan. Setiap pelanggan menerima salinan pesan dan memprosesnya.

Cara menggunakan Amazon SNS untuk menerapkan pola berlangganan publikasi.

Amazon EventBridge

Anda dapat menggunakan Amazon EventBridge saat Anda membutuhkan perutean pesan yang lebih kompleks dari beberapa produsen di berbagai protokol ke konsumen berlangganan, atau langganan langsung dan penggemar. EventBridge juga mendukung routing berbasis konten, penyaringan, pengurutan, dan pemisahan atau agregasi. Dalam ilustrasi berikut, EventBridge digunakan untuk membangun versi pola berlangganan publikasi di mana pelanggan ditentukan dengan menggunakan aturan acara. Setelah pengguna melakukan pembayaran, fungsi Payments Lambda mengirimkan pesan ke EventBridge dengan menggunakan bus acara default berdasarkan skema kustom yang memiliki tiga aturan yang menunjuk ke target yang berbeda. Setiap layanan mikro memproses pesan dan melakukan tindakan yang diperlukan.

Cara menggunakan Amazon EventBridge untuk menerapkan pola berlangganan publikasi.

Lokakarya

Referensi blog

Konten terkait