全部产品
Search
文档中心

Microservices Engine:Menerapkan peluncuran kanari ujung ke ujung berdasarkan Message Queue for Apache RocketMQ

更新时间:Nov 10, 2025

Pengendalian trafik dalam skenario asinkron, seperti yang melibatkan antrian pesan, memungkinkan Anda menerapkan peluncuran kanari ujung ke ujung tanpa mengubah kode bisnis. Topik ini menjelaskan cara menggunakan Microservices Engine (MSE) untuk menerapkan peluncuran kanari ujung ke ujung berdasarkan Message Queue for Apache RocketMQ.

Prasyarat

Arsitektur demo

Topik ini menggunakan aplikasi yang diterapkan di konsol Container Service for Kubernetes (ACK) sebagai contoh. Anda juga dapat menggunakan kubectl untuk menerapkan aplikasi dan mensimulasikan rantai panggilan nyata. Gambar berikut menunjukkan arsitektur aplikasi demo. Panggilan antar-aplikasi mencakup panggilan Spring Cloud dan Dubbo, yang merupakan dua kerangka kerja mikroservis paling umum. Aplikasi C menghasilkan pesan RocketMQ yang dikonsumsi oleh Aplikasi A. Saat Aplikasi A mengonsumsi pesan tersebut, aplikasi ini juga memulai panggilan baru. Aplikasi-aplikasi ini didasarkan pada penggunaan standar Spring Cloud, Dubbo, dan RocketMQ.

Calling relationship diagram

Langkah 1: Menghubungkan aplikasi ke Governance Mikroservis MSE

  • Aktifkan Governance Mikroservis untuk aplikasi mikroservis di kluster Container Service for Kubernetes (ACK). Anda dapat memilih metode yang sesuai berdasarkan kebutuhan bisnis Anda. Untuk informasi selengkapnya, lihat Aktifkan Governance Mikroservis untuk aplikasi mikroservis Java di kluster ACK atau ACS.

    Aktifkan Governance Mikroservis untuk aplikasi dalam namespace ACK

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

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

    3. Di halaman Application list, klik ACK Application Access.

    4. Pada kotak dialog ACK Application Access, konfigurasikan parameter dan klik OK.

      image

      Parameter

      Deskripsi

      Cluster type

      Pilih ACK Cluster, ACK Serverless Cluster, atau ACS Cluster.

      Catatan

      Jika Anda belum memberikan izin Container Service for Kubernetes untuk memanggil Microservices Engine, klik Harap Otorisasi untuk memberikan izin tersebut.

      Cluster Name/ID

      Pilih nama atau ID Cluster Name/ID yang ingin Anda hubungkan ke governance mikroservis MSE. Anda dapat mencari kluster berdasarkan kata kunci.

      ack-onepilot

      Status komponen ack-onepilot. Untuk informasi selengkapnya tentang komponen ack-onepilot dan cara memutakhirkan komponen tersebut, lihat komponen ack-onepilot dan Instal dan mutakhirkan komponen governance mikroservis MSE.

      • Jika ack-onepilot belum diinstal, sistem akan menginstalnya secara otomatis setelah Anda memilih kluster. Pesan akan muncul: "The Installation Takes About 1 Minute. Please Wait."

        Jika Anda menggunakan Pengguna RAM dan tidak memiliki izin yang diperlukan, masuk ke Konsol Container Service for Kubernetes. Buka halaman detail kluster target. Klik Component Management, temukan ack-onepilot, lalu klik Install.

      • Jika ack-onepilot sudah diinstal, konsol akan menampilkan "Terinstal" diikuti nomor versinya, misalnya, Terinstal 4.2.0.

      Catatan
      • Komponen yang diinstal pada langkah ini adalah ack-onepilot. Anda dapat masuk ke Konsol Container Service for Kubernetes, buka halaman detail kluster target, lalu pilih Operations Management > Component Management untuk melihat detailnya.

      • Setelah ack-onepilot diinstal, komponen tersebut secara otomatis menyuntikkan agen. Hal ini dapat meningkatkan waktu startup aplikasi hingga 10 detik.

      • Jika Anda menghubungkan berdasarkan namespace dan kluster target tidak berada di salah satu wilayah berikut, pastikan kluster dapat mengakses Internet dan terhubung ke acm.aliyun.com:8080: Qingdao, Hangzhou, Beijing, Shanghai, Shanghai-Finance Cloud, Shenzhen, Hong Kong (Tiongkok), Singapura, Frankfurt, Sydney, Silicon Valley, dan Virginia.

      Access Type

      Pilih Namespace Access.

      Cluster Namespace

      Pilih Cluster Namespace.

      Microservices Governance Namespace

      Pilih Microservices Governance Namespace.

    Aktifkan Governance Mikroservis untuk aplikasi

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

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

    3. Di halaman Application list, klik ACK Application Access.

    4. Pada kotak dialog ACK Application Access, Anda dapat mengonfigurasi parameter dan klik OK.

      image

      Parameter

      Deskripsi

      Cluster type

      Pilih ACK Cluster, ACK Serverless Cluster, atau ACS Cluster.

      Catatan

      Jika Anda belum memberikan izin Container Service for Kubernetes untuk memanggil Microservices Engine, klik Harap Otorisasi untuk memberikan izin tersebut.

      Cluster Name/ID

      Pilih nama atau ID Cluster Name/ID yang ingin Anda hubungkan ke governance mikroservis MSE. Anda dapat mencari kluster berdasarkan kata kunci.

      ack-onepilot

      Status komponen ack-onepilot. Untuk informasi selengkapnya tentang komponen ack-onepilot dan cara memutakhirkan komponen tersebut, lihat komponen ack-onepilot dan Instal dan mutakhirkan komponen governance mikroservis MSE.

      • Jika ack-onepilot belum diinstal, sistem akan menginstalnya secara otomatis setelah Anda memilih kluster. Pesan akan muncul: "The Installation Takes About 1 Minute. Please Wait."

        Jika Anda menggunakan Pengguna RAM dan tidak memiliki izin yang diperlukan, masuk ke Konsol Container Service for Kubernetes. Buka halaman detail kluster target. Klik Component Management, temukan ack-onepilot, lalu klik Install.

      • Jika ack-onepilot sudah diinstal, konsol akan menampilkan "Terinstal" diikuti nomor versinya, misalnya, Terinstal 4.2.0.

      Catatan
      • Komponen yang diinstal pada langkah ini adalah ack-onepilot. Anda dapat masuk ke Konsol Container Service for Kubernetes, buka halaman detail kluster target, lalu pilih Operations Management > Component Management untuk melihat detailnya.

      • Setelah ack-onepilot diinstal, komponen tersebut secara otomatis menyuntikkan agen. Hal ini dapat meningkatkan waktu startup aplikasi hingga 10 detik.

      • Jika Anda menghubungkan berdasarkan namespace dan kluster target tidak berada di salah satu wilayah berikut, pastikan kluster dapat mengakses Internet dan terhubung ke acm.aliyun.com:8080: Qingdao, Hangzhou, Beijing, Shanghai, Shanghai-Finance Cloud, Shenzhen, Hong Kong (Tiongkok), Singapura, Frankfurt, Sydney, Silicon Valley, dan Virginia.

      Access Type

      Pilih Single Application Access.

      Access Procedure

      Ikuti langkah-langkah berikut.

      Step 1: Go To The Workloads > Deployments Page Of The Cluster And Switch To The Namespace Of The Application.

      Step 2: Find The Application That You Want To Connect And Click "View In YAML".

      Step 3: Edit The Labels In The Following Format And Click "Update".

      spec:
        template:
          metadata:
            labels:
              # Tetapkan nilai menjadi "on" untuk mengaktifkan koneksi. Nilai harus diapit tanda kutip ganda.
              msePilotAutoEnable: "on"
              # Tentukan namespace governance yang akan dihubungkan. Jika namespace tidak ada, namespace tersebut akan dibuat secara otomatis.
              mseNamespace: default
              # Tentukan nama aktual aplikasi yang akan dihubungkan ke MSE. Nama harus diapit tanda kutip ganda.
              msePilotCreateAppName: "your-deployment-name"

Langkah 2: Menerapkan aplikasi

Terapkan aplikasi spring-cloud-zuul, spring-cloud-a, spring-cloud-b, dan spring-cloud-c, bersama dengan server Nacos dan server RocketMQ. Anda juga dapat langsung mendapatkan kode sumber dari Demo.

Saat aplikasi spring-cloud-zuul menerima permintaan untuk /A/dubbo, aplikasi tersebut meneruskan permintaan ke spring-cloud-a. Kemudian, spring-cloud-a menggunakan protokol Dubbo untuk memanggil spring-cloud-b, yang kemudian memanggil spring-cloud-c. Setelah menerima permintaan, spring-cloud-c menghasilkan pesan dan mengembalikan tag lingkungan serta alamat IP-nya. Pesan-pesan ini kemudian dikonsumsi oleh aplikasi spring-cloud-a. Saat mengonsumsi pesan, spring-cloud-a menggunakan Spring Cloud untuk memanggil spring-cloud-b, yang kemudian memanggil spring-cloud-c. Akhirnya, spring-cloud-a mencatat hasilnya ke log-nya.

# Saat /A/dubbo diakses, nilai kembali adalah: A[10.25.xx.xx] -> B[10.25.xx.xx] -> C[10.25.xx.xx].
# Pada saat yang sama, spring-cloud-a menerima pesan dan mencatat informasi berikut:

2021-12-28 10:58:50.301  INFO 1 --- [essageThread_15] c.a.mse.demo.service.MqConsumer
          : topik:TEST_MQ,produsen:C[10.25.xx.xx],hasil pemanggilan:A[10.25.xx.xx] -> B[10.25.xx.xx] -> C[10.25.xx.xx]
  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik nama kluster tersebut atau klik Details di kolom Actions. Halaman detail kluster akan muncul.

  3. Di panel navigasi sebelah kiri halaman detail, pilih Workloads > Deployments.

  4. Di halaman Deployments, pilih Namespace dan klik Create From YAML untuk menerapkan aplikasi dengan kode YAML berikut:

    Perluas untuk melihat file YAML

    # Terapkan server Nacos.
    
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nacos-server
    spec:
      selector:
        matchLabels:
          app: nacos-server
      template:
        metadata:
          labels:
            app: nacos-server
        spec:
          containers:
            - env:
                - name: MODE
                  value: "standalone"
              image: registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/nacos-server:v2.1.2
              imagePullPolicy: IfNotPresent
              name: nacos-server
              ports:
                - containerPort: 8848
    
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: nacos-server
    spec:
      type: ClusterIP
      selector:
        app: nacos-server
      ports:
        - name: http
          port: 8848
          targetPort: 8848
    
    # Terapkan aplikasi bisnis.
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: spring-cloud-zuul
    spec:
      selector:
        matchLabels:
          app: spring-cloud-zuul
      template:
        metadata:
          labels:
            app: spring-cloud-zuul
            msePilotCreateAppName: spring-cloud-zuul
        spec:
          containers:
            - env:
                - name: JAVA_HOME
                  value: /usr/lib/jvm/java-1.8-openjdk/jre
                - name: enable.mq.invoke
                  value: 'true'
              image: registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/spring-cloud-zuul:3.0.1
              imagePullPolicy: Always
              name: spring-cloud-zuul
              ports:
                - containerPort: 20000
    
    ---
    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: slb.s1.small
        service.beta.kubernetes.io/alicloud-loadbalancer-address-type: internet
      name: zuul-slb
    spec:
      ports:
        - port: 80
          protocol: TCP
          targetPort: 20000
      selector:
        app: spring-cloud-zuul
      type: LoadBalancer
    status:
      loadBalancer: {}
    
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: spring-cloud-a
    spec:
      selector:
        matchLabels:
          app: spring-cloud-a
      template:
        metadata:
          labels:
            app: spring-cloud-a
            msePilotCreateAppName: spring-cloud-a
        spec:
          containers:
            - env:
                - name: JAVA_HOME
                  value: /usr/lib/jvm/java-1.8-openjdk/jre
              image: registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/spring-cloud-a:3.0.1
              imagePullPolicy: Always
              name: spring-cloud-a
              ports:
                - containerPort: 20001
              livenessProbe:
                tcpSocket:
                  port: 20001
                initialDelaySeconds: 10
                periodSeconds: 30
    
    
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: spring-cloud-b
    spec:
      selector:
        matchLabels:
          app: spring-cloud-b
      template:
        metadata:
          labels:
            app: spring-cloud-b
            msePilotCreateAppName: spring-cloud-b
        spec:
          containers:
            - env:
                - name: JAVA_HOME
                  value: /usr/lib/jvm/java-1.8-openjdk/jre
              image: registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/spring-cloud-b:3.0.1
              imagePullPolicy: Always
              name: spring-cloud-b
              ports:
                - containerPort: 20002
              livenessProbe:
                tcpSocket:
                  port: 20002
                initialDelaySeconds: 10
                periodSeconds: 30
    
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: spring-cloud-c
    spec:
      selector:
        matchLabels:
          app: spring-cloud-c
      template:
        metadata:
          labels:
            app: spring-cloud-c
            msePilotCreateAppName: spring-cloud-c
        spec:
          containers:
            - env:
                - name: JAVA_HOME
                  value: /usr/lib/jvm/java-1.8-openjdk/jre
              image: registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/spring-cloud-c:3.0.1
              imagePullPolicy: Always
              name: spring-cloud-c
              ports:
                - containerPort: 20003
              livenessProbe:
                tcpSocket:
                  port: 20003
                initialDelaySeconds: 10
                periodSeconds: 30
    ---
    
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: rockectmq-broker
    spec:
      selector:
        matchLabels:
          app: rockectmq-broker
      template:
        metadata:
          labels:
            app: rockectmq-broker
        spec:
          containers:
            - command:
                - sh
                - mqbroker
                - '-n'
                - 'mqnamesrv:9876'
                - '-c /home/rocketmq/rocketmq-4.9.7/conf/broker.conf'
              env:
                - name: ROCKETMQ_HOME
                  value: /home/rocketmq/rocketmq-4.9.7
              image: registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/rocketmq:4.9.7
              imagePullPolicy: Always
              name: rockectmq-broker
              ports:
                - containerPort: 9876
                  protocol: TCP
                - containerPort: 10911
                  protocol: TCP
                - containerPort: 10912
                  protocol: TCP
                - containerPort: 10909
    
    ---
    
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: rocketmq-name-server
    spec:
      selector:
        matchLabels:
          app: rocketmq-name-server
      template:
        metadata:
          labels:
            app: rocketmq-name-server
        spec:
          containers:
            - command:
                - sh
                - mqnamesrv
              env:
                - name: ROCKETMQ_HOME
                  value: /home/rocketmq/rocketmq-4.9.7
              image: registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/rocketmq:4.9.7
              imagePullPolicy: Always
              name: rocketmq-name-server
              ports:
                - containerPort: 9876
                  protocol: TCP
                - containerPort: 10911
                  protocol: TCP
                - containerPort: 10912
                  protocol: TCP
                - containerPort: 10909
                  protocol: TCP
    
    ---
    
    apiVersion: v1
    kind: Service
    metadata:
      name: mqnamesrv
    spec:
      type: ClusterIP
      selector:
        app: rocketmq-name-server
      ports:
        - name: mqnamesrv-9876-9876
          port: 9876
          targetPort: 9876
                            
  5. Jalankan perintah berikut untuk memeriksa apakah aplikasi telah diterapkan.

    kubectl get svc,deploy

    Keluaran yang diharapkan:

    NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP    PORT(S)        AGE
    service/kubernetes     ClusterIP      192.168.xx.xx    <none>         4xx/TCP        7d
    service/mqnamesrv      ClusterIP      192.168.xx.xx    <none>         98xx/TCP       47h
    service/nacos-server   ClusterIP      192.168.xx.xx    <none>         88xx/TCP       47h
    service/zuul-slb       LoadBalancer   192.168.xx.xx   123.56.xx.xx   80:302xxx/TCP   47h
    
    NAME                                   READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/nacos-server           1/1     1            1           4m
    deployment.apps/rockectmq-broker       1/1     1            1           4m
    deployment.apps/rocketmq-name-server   1/1     1            1           5m
    deployment.apps/spring-cloud-a         1/1     1            1           5m
    deployment.apps/spring-cloud-b         1/1     1            1           5m
    deployment.apps/spring-cloud-c         1/1     1            1           5m
    deployment.apps/spring-cloud-zuul      1/1     1            1           5m

Langkah 3: Mengaktifkan rilis canary berbasis pesan RocketMQ untuk aplikasi

Asumsikan spring-cloud-c adalah produsen pesan dan spring-cloud-a adalah konsumen pesan. Aktifkan fitur rilis canary berbasis pesan RocketMQ untuk kedua aplikasi tersebut.

Catatan
  • Untuk mengaktifkan atau menonaktifkan fitur rilis canary berbasis pesan RocketMQ, Anda harus menerapkan ulang aplikasi di konsol ACK agar perubahan berlaku.

  • Fitur rilis canary berbasis pesan hanya berlaku jika diaktifkan untuk kedua pihak, baik produsen maupun konsumen pesan.

  • Fitur ini saat ini hanya mendukung pesan RocketMQ, termasuk versi open source dan versi komersial Alibaba Cloud.

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

    • Jika Anda menggunakan Message Queue for Apache RocketMQ 4.x Alibaba Cloud, Anda harus menggunakan Edisi Perusahaan untuk menggunakan penyaringan SQL92. Batasan ini tidak berlaku jika Anda menggunakan penyaringan sisi klien atau Message Queue for Apache RocketMQ 5.x Alibaba Cloud.

    • Jika Anda menggunakan klien ONS, versinya harus 1.8.0.Final atau lebih baru.

  • Setelah Anda mengaktifkan rilis canary berbasis pesan RocketMQ, MSE memodifikasi kelompok konsumen pesan tersebut. Misalnya, jika kelompok konsumen awal adalah group1 dan tag lingkungannya adalah gray, kelompok tersebut akan diubah menjadi group1_gray setelah fitur diaktifkan. Jika Anda menggunakan Message Queue for Apache RocketMQ Alibaba Cloud, Anda harus membuat kelompok tersebut terlebih dahulu.

  • Secara default, MSE menggunakan sintaks SQL92 untuk menyaring pesan. Jika Anda menggunakan Apache RocketMQ, Anda harus mengaktifkan penyaringan SQL92 di sisi server dengan menambahkan konfigurasi enablePropertyFilter=true ke file broker.conf.

  • Jika skenario Anda tidak mendukung penyaringan SQL92, Anda dapat menggunakan FilterMessageHook untuk menyaring pesan di sisi konsumen. Metode ini mengharuskan Anda mengaktifkan rilis canary berbasis pesan di semua aplikasi dan memilih metode penyaringan sisi klien. Karena metode penyaringan sisi konsumen memproses semua pesan di setiap lingkungan, metode ini memberikan beban berat pada produsen dan konsumen pesan. Kami tidak merekomendasikan penggunaan metode ini di lingkungan produksi.

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

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

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

  4. Di tab Message Grayscale, aktifkan sakelar Aktifkan Grayscale Pesan dan klik OK.

    image

  5. Masuk ke Konsol ACK Konsol ACK dan terapkan ulang aplikasi untuk menerapkan konfigurasi.

Langkah 4: Menerapkan aplikasi versi baru

Terapkan versi baru aplikasi: spring-cloud-a-gray, spring-cloud-b-gray, dan spring-cloud-c-gray.

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik nama kluster tersebut atau klik Details di kolom Actions. Halaman detail kluster akan muncul.

  3. Di panel navigasi sebelah kiri halaman detail, pilih Workloads > Deployments.

  4. Di halaman Deployments, pilih Namespace dan klik Create From YAML. Gunakan kode YAML berikut untuk menerapkan aplikasi:

    Perluas untuk melihat file YAML

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: spring-cloud-a-gray
    spec:
      selector:
        matchLabels:
          app: spring-cloud-a-gray
      template:
        metadata:
          labels:
            alicloud.service.tag: gray
            app: spring-cloud-a-gray
            msePilotCreateAppName: spring-cloud-a
        spec:
          containers:
            - env:
                - name: JAVA_HOME
                  value: /usr/lib/jvm/java-1.8-openjdk/jre
              image: registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/spring-cloud-a:3.0.1
              imagePullPolicy: Always
              name: spring-cloud-a-gray
              ports:
                - containerPort: 20001
              livenessProbe:
                tcpSocket:
                  port: 20001
                initialDelaySeconds: 10
                periodSeconds: 30
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: spring-cloud-b-gray
    spec:
      selector:
        matchLabels:
          app: spring-cloud-b-gray
      template:
        metadata:
          labels:
            alicloud.service.tag: gray 
            app: spring-cloud-b-gray
            msePilotCreateAppName: spring-cloud-b
        spec:
          containers:
            - env:
                - name: JAVA_HOME
                  value: /usr/lib/jvm/java-1.8-openjdk/jre
              image: registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/spring-cloud-b:3.0.1
              imagePullPolicy: Always
              name: spring-cloud-b-gray
              ports:
                - containerPort: 20002
              livenessProbe:
                tcpSocket:
                  port: 20002
                initialDelaySeconds: 10
                periodSeconds: 30
    
    ---
    
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: spring-cloud-c-gray
    spec:
      selector:
        matchLabels:
          app: spring-cloud-c-gray
      template:
        metadata:
          labels:
            alicloud.service.tag: gray
            app: spring-cloud-c-gray
            msePilotCreateAppName: spring-cloud-c
        spec:
          containers:
            - env:
                - name: JAVA_HOME
                  value: /usr/lib/jvm/java-1.8-openjdk/jre
              image: registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/spring-cloud-c:3.0.1
              imagePullPolicy: Always
              name: spring-cloud-c-gray
              ports:
                - containerPort: 20003
              livenessProbe:
                tcpSocket:
                  port: 20003
                initialDelaySeconds: 10
                periodSeconds: 30

Langkah 5: Mengarahkan trafik dan memverifikasi hasil

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

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

  3. Klik kartu sumber daya untuk aplikasi spring-cloud-a. Di halaman Application Overview, QPS Trend Graph menunjukkan bahwa seluruh trafik diarahkan ke versi garis dasar aplikasi, yaitu versi stabilnya.

  4. Di panel navigasi sebelah kiri, klik Traffic Governance lalu tab Tag-based Routing. Di kolom Traffic Rule untuk tag gray, klik Add.

    image

  5. Di panel Create Label Route, konfigurasikan aturan trafik dan klik OK.

    Dalam contoh ini, kondisi aturan trafik ditetapkan sebagai name=xiaoming. Untuk informasi selengkapnya tentang cara mengonfigurasi aturan trafik, lihat Konfigurasi routing berbasis tag.

    image

    Anda dapat melihat distribusi trafik di halaman Application Overview setelah aturan trafik berlaku.

  6. Di tab Tag-based Routing, klik nama aturan tujuan untuk tag gray. Di panel Rule Details, klik Edit. Di panel Modify Tag-based Routing Rule, aktifkan sakelar Tag Propagation dan klik OK.

    Catatan

    Setelah Anda mengaktifkan propagasi tag, trafik grayscale yang cocok dengan name=xiaoming akan dilewatkan secara ujung ke ujung, sehingga Anda tidak perlu mengonfigurasi aturan berulang kali.

  7. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  8. Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel sebelah kiri, pilih Network > Services.

  9. Klik layanan zuul-slb. Di bawah Basic Information, klik alamat di samping External IP Address (External IP).

  10. Di halaman panggilan layanan, masukkan /A/dubbo?name=xiaoming dan klik Start Call.

    Rilis canary ujung ke ujung kini berlaku.

    image

    Data trafik untuk aplikasi spring-cloud-b sekarang sebagai berikut:

    Traffic curve of the spring-cloud-b application

Langkah 6: Menyesuaikan aturan penyaringan pesan berbasis tag dan memverifikasi hasil

  1. Masuk ke Konsol MSE.

  2. Di panel navigasi sebelah kiri, pilih Microservices Governance > Application Governance dan klik kartu sumber daya untuk aplikasi spring-cloud-a.

  3. Di panel navigasi sebelah kiri, klik Traffic Governance lalu klik tab Message Grayscale.

  4. Di tab Message Grayscale, klik tombol Edit di samping Tags To Be Ignored By The Baseline Environment. Pilih gray di kotak input dan klik OK.

    Jika Anda memilih gray untuk parameter Tag yang Diabaikan di Lingkungan Garis Dasar, pesan dengan tag lingkungan `gray` hanya dapat dikonsumsi oleh `spring-cloud-a-gray`, bukan oleh `spring-cloud-a`. Parameter Tag yang Diabaikan di Lingkungan Garis Dasar berlaku secara dinamis setelah dikonfigurasi, dan Anda tidak perlu me-restart aplikasi.

    Catatan

    Secara default, node garis dasar mengonsumsi pesan dari semua lingkungan. Jika Anda tidak ingin node garis dasar mengonsumsi pesan yang dihasilkan oleh lingkungan bertag, Anda hanya perlu mengonfigurasi parameter Tag yang Diabaikan di Lingkungan Garis Dasar.

  5. Masuk ke Konsol ACK untuk melihat log aplikasi spring-cloud-a dan memverifikasi konfigurasi.

    Log pada gambar berikut menunjukkan bahwa lingkungan garis dasar dapat mengonsumsi pesan yang dihasilkan di lingkungan gray maupun garis dasar. Setelah Anda mengatur parameter Tag yang Diabaikan di Lingkungan Garis Dasar menjadi `gray`, lingkungan garis dasar hanya mengonsumsi pesan yang dihasilkan di lingkungan garis dasar.

    Logs