全部产品
Search
文档中心

:Konfigurasi rilis canary pesan

更新时间:Nov 10, 2025

Aktifkan rilis canary pesan untuk skenario seperti peluncuran canary ujung ke ujung dan isolasi lingkungan pengembangan. MSE saat ini hanya mendukung rilis canary pesan untuk RocketMQ.

Informasi latar belakang

Dalam sebagian besar skenario bisnis, persyaratan untuk rilis canary pesan tidak seketat persyaratan untuk Remote Procedure Calls (RPC). Namun, rilis canary pesan ujung ke ujung tetap diperlukan dalam skenario berikut.

  • Setelah memodifikasi logika konsumsi pesan, Anda dapat menggunakan sejumlah kecil trafik untuk memverifikasi logika baru tersebut. Hal ini memerlukan rilis canary pesan.

  • Saat mengonsumsi pesan, RPC baru mungkin dihasilkan. Jika panggilan tersebut tidak mengikuti aturan pembentukan trafik ujung ke ujung yang telah ditentukan sebelumnya, trafik yang dihasilkan oleh pesan tersebut dapat "lepas". Hal ini melanggar aturan rilis canary ujung ke ujung dan dapat menyebabkan hasil yang tidak diinginkan.

Cara kerja

Fitur tata kelola layanan MSE untuk rilis canary pesan bekerja dengan menambahkan konteks lingkungan saat ini ke atribut pesan ketika suatu aplikasi mengirim pesan. Selama konsumsi pesan, pesan difilter berdasarkan konteks lingkungan ini dalam atributnya.

Definisi pesan canary: Pesan canary adalah pesan yang dihasilkan dengan salah satu dari dua cara berikut.

  1. Pesan yang langsung dihasilkan oleh produsen canary: Pesan yang diproduksi oleh node canary (produsen canary) dianggap sebagai pesan canary secara default.

  2. Pesan fallback dari node garis dasar: Ketika tidak ada node produsen canary dalam sistem, trafik canary dialihkan kembali ke node garis dasar. Pesan yang diproduksi oleh node garis dasar dalam kasus ini juga dianggap sebagai pesan canary.

Secara default, setelah Anda mengaktifkan rilis canary pesan, pesan garis dasar dari lingkungan garis dasar hanya dikonsumsi oleh konsumen garis dasar. Pesan canary dikonsumsi baik oleh konsumen garis dasar maupun konsumen canary yang sesuai. Akibatnya, konsumen garis dasar dan konsumen canary masing-masing secara independen mengonsumsi pesan canary yang sama.

Jika Anda ingin pesan yang diproduksi oleh aplikasi di lingkungan canary hanya dikonsumsi oleh konsumen canary yang sesuai, lihat Konfigurasi konsumen pesan canary.

Batasan

Dukungan framework

  • Jenis pesan: Hanya RocketMQ yang didukung, termasuk versi open source dan versi komersial Alibaba Cloud.

  • Untuk RocketMQ Server:

    • Jika Anda menggunakan versi open source, Anda harus menggunakan RocketMQ Server 4.5.0 atau yang lebih baru.

    • Jika Anda menggunakan seri Alibaba Cloud RocketMQ 4.x, Anda harus menggunakan Edisi Platinum untuk mengaktifkan filtering sisi server. Untuk edisi lainnya, Anda dapat menggunakan filtering sisi klien.

    • Jika Anda menggunakan seri Alibaba Cloud RocketMQ 5.x, filtering sisi server dan sisi klien sama-sama didukung.

  • Untuk RocketMQ Client:

    • Jika Anda menggunakan Ons Client yang disediakan oleh Alibaba Cloud RocketMQ, Anda harus menggunakan versi seri 1.x yang lebih baru dari 1.8.0.Final.

    • Jika Anda menggunakan klien org.apache.rocketmq:rocketmq-client dari RocketMQ open-source, versi yang didukung untuk org.apache.rocketmq:rocketmq-client adalah versi 4.x apa pun yang lebih baru dari 4.2.0. Klien ini mendukung filtering sisi server maupun sisi klien.

    • Jika Anda menggunakan klien org.apache.rocketmq:rocketmq-client-java dari RocketMQ open source, gunakan versi seri 5.x untuk org.apache.rocketmq:rocketmq-client dan versi 4.2.2 atau lebih baru untuk MSE Agent. Klien ini hanya mendukung filtering sisi server.

    • Untuk informasi tentang perbedaan antara SDK untuk RocketMQ open-source, lihat dokumentasi resmi RocketMQ.

  • MSE Agent saat ini tidak mendukung pesan transaksional.

Batasan fitur

  • Rilis canary pesan hanya berlaku jika fitur tersebut diaktifkan baik untuk produsen maupun konsumen pesan dalam tata kelola layanan MSE.

  • Setelah Anda mengaktifkan rilis canary pesan, MSE Agent memodifikasi Consumer Group konsumen pesan di lingkungan canary.

    Catatan

    Jika Anda menggunakan Alibaba Cloud RocketMQ, Anda harus membuat Consumer Group untuk lingkungan canary yang sesuai sebelum mengaktifkan rilis canary paket.

    1. Aturan modifikasi: Untuk lingkungan canary, `_tag` ditambahkan ke Consumer Group asli, di mana `tag` adalah tag lingkungan yang sesuai.

    2. Sebagai contoh, jika Consumer Group asli adalah `group1` dan tag lingkungan adalah `gray`, Consumer Group diubah dari `group1` menjadi `group1_gray` setelah Anda mengaktifkan rilis canary pesan.

  • MSE menggunakan filtering SQL-92 untuk filtering sisi server. Jika Anda menggunakan RocketMQ open source 4.x, Anda harus mengaktifkan dukungan filtering SQL-92 pada RocketMQ Server. Untuk melakukannya, atur enablePropertyFilter=true dalam file `broker.conf`.

  • Jika skenario Anda tidak memenuhi persyaratan untuk filtering SQL-92, Anda dapat menggunakan filtering sisi klien. Untuk melakukannya, pilih metode filtering sisi klien saat Anda mengaktifkan rilis canary pesan dalam tata kelola layanan MSE. Perlu diperhatikan bahwa filtering sisi klien mengharuskan setiap lingkungan memproses semua pesan, sehingga memberikan beban tinggi pada produsen maupun konsumen. Kami tidak merekomendasikan penggunaan filtering sisi klien di lingkungan produksi.

Aktifkan rilis canary pesan

  1. Masuk ke Konsol MSE, lalu pilih Wilayah di bilah navigasi atas.

  2. Di panel navigasi sebelah kiri, pilih Microservices Governance > Application Governance.

  3. Pada halaman Application list, klik kartu sumber daya aplikasi yang diinginkan. Di panel navigasi sebelah kiri, klik Traffic management.

  4. Pada halaman Traffic management, klik tab Message grayscale.

  5. Di sebelah kanan Open message grayscale, klik Edit. Konfigurasikan rilis canary pesan, pengaturan filtering, dan aturan konsumsi, lalu klik OK.

    Catatan
    • Setelah mengubah pengaturan rilis canary pesan, Anda harus me-restart semua node aplikasi yang sesuai agar perubahan tersebut berlaku. Hal ini berlaku baik untuk filtering sisi klien maupun sisi server.

    • Rilis canary pesan merupakan sub-fitur dari peluncuran canary ujung ke ujung. Untuk hasil terbaik, kami merekomendasikan agar Anda juga mengonfigurasi kemampuan peluncuran canary ujung ke ujung terkait saat mengaktifkan fitur ini.

Konfigurasi konsumen pesan canary

Jika Anda ingin pesan dari lingkungan canary hanya dikonsumsi oleh konsumen canary, Anda harus mencegah konsumen garis dasar mengonsumsinya. Untuk melakukannya, konfigurasikan aturan konsumsi untuk tag canary. Setelah konfigurasi ini, konsumen garis dasar hanya akan memproses pesan garis dasar dan pesan canary yang secara eksplisit dipilih untuk dikonsumsi oleh konsumen garis dasar.

Prosedur:

  1. Masuk ke Konsol MSE, lalu pilih Wilayah di bilah navigasi atas.

  2. Di panel navigasi sebelah kiri, pilih Microservices Governance > Application Governance.

  3. Pada halaman Application list, klik kartu sumber daya aplikasi yang diinginkan. Di panel navigasi sebelah kiri, klik Traffic management.

  4. Pada halaman Traffic management, klik tab Message grayscale.

  5. Pada bagian Message Canary Release Configuration, klik Edit. Pada konfigurasi aturan konsumsi, kosongkan kotak centang Baseline Consumer untuk tag yang sesuai, lalu klik OK.

Catatan
  • Perubahan pada konfigurasi aturan konsumsi berlaku secara dinamis. Anda tidak perlu me-restart aplikasi.

  • Karena lingkungan garis dasar tidak lagi mengonsumsi pesan dengan tag yang diabaikan, jika semua konsumen di lingkungan canary yang sesuai offline, pesan canary dengan tag tersebut tidak akan dikonsumsi.

Alur kerja rilis canary

Skenario 1: Penerapan permanen konsumen canary

Dalam skenario dengan penerapan jangka panjang konsumen pesan canary, Anda dapat menghubungkan produsen dan konsumen ke tata kelola layanan mikro serta mengaktifkan rilis canary pesan. Hal ini memastikan bahwa pesan canary dikonsumsi oleh konsumen canary dan pesan garis dasar dikonsumsi oleh konsumen garis dasar. Seluruh proses ini hanya memerlukan konfigurasi sekali saja, sehingga efisien dan mudah dipelihara.

Catatan: Jika pesan Anda tidak idempoten, Anda harus memastikan bahwa pesan canary dikonsumsi oleh konsumen canary dan pesan garis dasar dikonsumsi oleh konsumen garis dasar. Untuk melakukannya, ikuti langkah-langkah berikut.

Prasyarat: Aplikasi produsen dan konsumen pesan harus terhubung ke tata kelola layanan mikro. Anda juga harus me-restart aplikasi setelah mengaktifkan rilis canary pesan.

  1. Konfigurasikan aturan konsumsi untuk konsumen. Untuk tag yang sesuai dengan pesan canary, kosongkan kotak centang Baseline Consumer.

  2. Setelah melakukan operasi di Konsol MSE, tunggu 1 hingga 3 menit untuk memastikan hubungan langganan di sisi RocketMQ telah diperbarui.

  3. Bawa online node canary dari konsumen pesan.

  4. Bawa online node canary dari produsen pesan dan kirim pesan canary.

Skenario 2: Rilis dinamis konsumen canary

Dalam skenario di mana node canary dirilis bersama iterasi aplikasi, node canary bersifat sementara dan dapat diaktifkan atau dinonaktifkan tergantung pada fase rilis. Untuk mencegah akumulasi atau loss pesan, Anda harus menyesuaikan perilaku filtering node konsumen garis dasar berdasarkan status node canary. Ikuti prosedur berikut selama rilis:

  1. Modifikasi konfigurasi aturan konsumsi untuk aplikasi konsumen. Untuk tag yang sesuai dengan pesan canary, kosongkan kotak centang Baseline Consumer sehingga pesan canary hanya dikonsumsi oleh konsumen canary. Setelah melakukan operasi di Konsol MSE, tunggu 1 hingga 3 menit untuk memastikan hubungan langganan di sisi RocketMQ telah diperbarui.

  2. Bawa online node canary dari aplikasi konsumen pesan.

  3. Kirim pesan canary dari node canary aplikasi produsen pesan.

  4. Verifikasi pesan canary.

  5. Nonaktifkan node produsen pesan canary.

  6. Tunggu hingga offset consumer_group garis dasar kurang dari atau sama dengan offset consumer_group canary. Gunakan log dan pemantauan untuk memastikan bahwa semua pesan canary sebelumnya telah berhasil dikonsumsi.

    Catatan

    Jika offset consumer_group garis dasar kurang dari atau sama dengan offset consumer_group canary, sisa Paket canary dapat dikonsumsi oleh konsumen garis dasar dan tidak akan hilang. Anda kemudian dapat melanjutkan ke langkah berikutnya. Dalam skenario ini, beberapa Paket canary akan dikonsumsi secara berulang. Anda harus memastikan bahwa logika bisnis Anda menangani idempotensi Paket.

    Jika offset consumer_group garis dasar lebih besar daripada offset consumer_group canary, Paket canary akan hilang jika Anda melanjutkan ke langkah berikutnya. Oleh karena itu, Anda harus menunggu.

  7. Modifikasi konfigurasi aturan konsumsi untuk aplikasi konsumen. Untuk tag yang sesuai dengan pesan canary, centang kotak Baseline Consumer sehingga pesan canary yang tersisa dapat dikonsumsi oleh konsumen garis dasar. Setelah melakukan operasi di Konsol MSE, tunggu 1 hingga 3 menit untuk memastikan hubungan langganan di sisi RocketMQ telah diperbarui.

  8. Nonaktifkan konsumen pesan canary dan hapus consumer_group canary.

    Catatan

    Jika Anda tidak menghapus consumer_group canary, pesan akan menumpuk di kelompok tersebut. Saat konsumen canary berikutnya diaktifkan kembali selama suatu iterasi, mereka akan mulai mengonsumsi dari offset konsumen canary terakhir yang terekam.