Topik ini menjelaskan model domain ApsaraMQ for RocketMQ.
Posisi layanan
ApsaraMQ for RocketMQ adalah produk middleware untuk arsitektur terdistribusi yang menggunakan metode komunikasi asinkron dan model pesan publish-subscribe.
Untuk informasi lebih lanjut tentang metode komunikasi dan model pesan, lihat Metode Komunikasi dan Model Pesan.
ApsaraMQ for RocketMQ memberikan manfaat komunikasi asinkron, seperti topologi sistem yang sederhana dan penguraian keterkaitan yang lemah antara sistem hulu dan hilir. Produk ini terutama digunakan dalam skenario seperti penguraian keterkaitan asinkron dan penggeseran beban puncak.
Untuk tautan sinkron yang memerlukan hasil panggilan secara real-time, gunakan solusi Remote Procedure Call (RPC).
Pilih produk berdasarkan skenario bisnis dan kebutuhan utama Anda.
Model domain ApsaraMQ for RocketMQ

Seperti yang ditunjukkan pada gambar di atas, siklus hidup sebuah pesan di ApsaraMQ for RocketMQ terdiri dari tiga bagian utama: produksi pesan, penyimpanan pesan, dan konsumsi pesan.
Produsen membuat pesan dan mengirimkannya ke server ApsaraMQ for RocketMQ. Pesan-pesan tersebut disimpan dalam topik di server. Konsumen kemudian mengonsumsi pesan tersebut dengan berlangganan ke topik-topik tersebut.
Produksi pesan
Produsen (Producer): Entitas runtime di ApsaraMQ for RocketMQ yang membuat pesan. Produsen biasanya diintegrasikan ke hulu rantai panggilan bisnis dan bersifat ringan serta anonim.
Penyimpanan pesan
Topik (Topic): Kontainer logis di ApsaraMQ for RocketMQ untuk transmisi dan penyimpanan pesan. Sebuah topik terdiri dari beberapa antrian. Antrian-antrian dalam sebuah topik digunakan untuk menyimpan pesan dan memungkinkan skalabilitas horizontal.
Topik Lite (LiteTopic): Di ApsaraMQ for RocketMQ, jika sebuah topik bertipe Lite, Anda dapat membuat sumber daya sekunder yang disebut topik lite di bawahnya. Secara default, setiap topik lite terdiri dari satu antrian.
Antrian (MessageQueue): Unit dasar untuk penyimpanan dan transmisi pesan di ApsaraMQ for RocketMQ. Antrian ini mirip dengan partisi di Kafka. ApsaraMQ for RocketMQ menggunakan struktur antrian tak hingga berbasis aliran untuk menyimpan pesan. Pesan dalam sebuah antrian disimpan secara berurutan.
Pesan (Message): Unit transmisi terkecil di ApsaraMQ for RocketMQ. Pesan bersifat immutable setelah diinisialisasi, dikirim, dan disimpan.
Konsumsi pesan
Kelompok konsumen (ConsumerGroup): Pengelompokan logis konsumen dalam model publish-subscribe ApsaraMQ for RocketMQ. Kelompok konsumen digunakan untuk mengelola beberapa konsumen dasar secara terpusat. Semua konsumen dalam kelompok konsumen yang sama harus memiliki logika dan konfigurasi konsumsi yang identik. Mereka bekerja sama untuk mengonsumsi pesan dari topik yang telah dilanggani, sehingga memungkinkan skalabilitas horizontal kapasitas konsumsi.
Konsumen (Consumer): Entitas runtime di ApsaraMQ for RocketMQ yang mengonsumsi pesan. Konsumen biasanya diintegrasikan ke hilir rantai panggilan bisnis dan harus ditetapkan ke kelompok konsumen tertentu.
Langganan (Subscription): Sekumpulan aturan yang menentukan penyaringan pesan, percobaan ulang, dan progres konsumsi dalam model publish-subscribe ApsaraMQ for RocketMQ. Langganan dikelola pada tingkat kelompok konsumen. Sebuah kelompok konsumen menentukan langganan untuk mengontrol cara konsumennya menyaring pesan, mencoba ulang konsumsi, dan memulihkan progres konsumsi.
Di ApsaraMQ for RocketMQ, langganan bersifat persisten, kecuali ekspresi filter. Artinya, hubungan langganan tetap dipertahankan meskipun server dimulai ulang atau klien terputus.
Metode komunikasi
Dalam arsitektur sistem terdistribusi, sistem kompleks sering dibagi menjadi beberapa modul independen, seperti layanan mikro. Modul-modul ini harus berkomunikasi satu sama lain secara jarak jauh. Dua pola komunikasi paling umum adalah panggilan Remote Procedure Call (RPC) sinkron dan komunikasi asinkron yang menggunakan proxy middleware.
Model panggilan RPC sinkron

Dalam model panggilan RPC sinkron, sistem yang berbeda berkomunikasi secara langsung. Pemanggil mengirim permintaan ke penerima panggilan, dan penerima panggilan harus segera mengembalikan tanggapan.
Istilah "sinkron" dalam konteks ini tidak merujuk pada API pemrograman. RPC juga dapat menggunakan gaya pemrograman asinkron non-blocking. Namun, model ini tetap memerlukan tanggapan langsung dari titik akhir target dalam periode tertentu.
Model komunikasi asinkron

Dalam model komunikasi asinkron, subsistem saling terurai keterkaitannya dan tidak terhubung secara langsung. Pemanggil mengubah permintaan menjadi event asinkron, yaitu pesan, lalu mengirimkannya ke proxy middleware. Panggilan dianggap selesai setelah pesan berhasil dikirim. Proxy kemudian bertanggung jawab untuk mengirimkan pesan tersebut secara andal ke sistem hilir dan memastikan tugas yang sesuai dieksekusi. Jenis proxy ini biasanya merupakan perangkat lunak perantara berorientasi pesan.
Komunikasi asinkron memberikan manfaat berikut:
Topologi sistem yang sederhana
Karena sistem hulu dan hilir berkomunikasi dengan proxy middleware, sistem memiliki topologi berbentuk bintang yang mudah dipelihara dan dikelola.
Penguraian keterkaitan yang lemah antara sistem hulu dan hilir
Sistem-sistem tersebut saling terurai keterkaitannya, sehingga arsitektur menjadi lebih fleksibel. Proxy middleware menangani tugas-tugas seperti buffering dan pemulihan asinkron. Hal ini memungkinkan sistem hulu dan hilir ditingkatkan serta dimodifikasi secara independen satu sama lain.
Penggeseran beban puncak
Proxy middleware berbasis pesan sering kali memiliki kemampuan buffering dan shaping lalu lintas yang kuat. Hal ini mencegah lonjakan lalu lintas membanjiri sistem hilir.
Model pesan
Model pesan utama untuk perangkat lunak perantara berorientasi pesan adalah model point-to-point dan model publish-subscribe.
Model point-to-point

Model point-to-point, juga disebut model pesan berbasis antrian, memiliki fitur-fitur berikut:
Konsumsi anonim: Antrian merupakan satu-satunya pengenal untuk komunikasi antara sistem hulu dan hilir. Konsumen hilir tidak dapat mendeklarasikan identitas independen saat mengambil pesan dari antrian.
Komunikasi satu-ke-satu: Karena konsumsi anonim, meskipun terdapat banyak konsumen hilir, mereka tidak memiliki identitas independen. Akibatnya, mereka saling bersaing untuk pesan dalam antrian. Setiap pesan hanya dapat diproses oleh satu konsumen. Artinya, model point-to-point memfasilitasi komunikasi satu-ke-satu.
Model publish-subscribe

Model publish-subscribe memiliki fitur-fitur berikut:
Konsumsi independen: Dibandingkan dengan konsumsi anonim pada model berbasis antrian, konsumen dalam model publish-subscribe memiliki identitas sendiri, biasanya disebut kelompok konsumen. Kelompok konsumen yang berbeda bersifat independen dan tidak saling memengaruhi.
Komunikasi satu-ke-banyak: Karena setiap kelompok memiliki identitas independen, pesan dalam topik yang sama dapat diproses oleh banyak kelompok konsumen. Setiap kelompok konsumen dapat menerima salinan semua pesan. Oleh karena itu, model publish-subscribe memungkinkan komunikasi satu-ke-banyak.
Perbandingan model transmisi
Model point-to-point dan publish-subscribe masing-masing memiliki keunggulan tersendiri. Model point-to-point lebih sederhana, sedangkan model publish-subscribe menawarkan ekstensibilitas yang lebih besar. ApsaraMQ for RocketMQ menggunakan model publish-subscribe dan karenanya menyediakan fitur-fitur model ini.