全部产品
Search
文档中心

Microservices Engine:Konfigurasi rilis canary

更新时间:Nov 10, 2025

Microservices Engine (MSE) mendukung rilis canary. Anda dapat merilis konfigurasi ke sejumlah kecil node untuk verifikasi sebelum merilisnya ke semua node. Praktik ini mengurangi risiko yang terkait dengan dorongan konfigurasi. Topik ini menjelaskan cara mengonfigurasi rilis canary untuk instans Nacos.

Prasyarat

Catatan
  • Gunakan Nacos Client 2.x atau versi yang lebih baru.

Informasi latar belakang

Saat Anda mengelola konfigurasi kluster secara terpusat, konfigurasi yang dimodifikasi biasanya akan menimpa konfigurasi sebelumnya dan didorong ke semua node dalam kluster. Jika konfigurasi baru salah, seluruh kluster mungkin gagal, sehingga ini merupakan operasi berisiko tinggi.

Untuk mengurangi risiko tersebut, Anda dapat melakukan rilis canary saat mengedit konfigurasi. Konfigurasi baru pertama-tama dirilis ke sejumlah kecil mesin. Jika verifikasi berhasil, Anda dapat secara bertahap memperluas rilis hingga semua node diperbarui. Metode ini mengurangi risiko yang terkait dengan perubahan konfigurasi.

Selama perubahan konfigurasi, Anda memilih node canary untuk rilis tersebut. MSE Nacos mendukung dua jenis rilis canary: berbasis alamat IP dan berbasis tag.

Rilis canary berbasis alamat IP

Rilis canary berbasis alamat IP adalah metode dasar di mana Anda memilih daftar alamat IP untuk menentukan mesin mana yang menerima konfigurasi baru. Untuk sistem bisnis kecil, metode ini cukup memenuhi kebutuhan rilis. Metode ini sangat mengurangi risiko dorongan konfigurasi dan kegagalan yang disebabkan oleh kesalahan konfigurasi.

Buat konfigurasi beta

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

  2. Di panel navigasi kiri, pilih Microservices Registry > Instances.

  3. Pada halaman Instances, klik nama instans.

  4. Di panel navigasi kiri, pilih Configuration Management > Configurations.

  5. Temukan konfigurasi target dan klik Edit di kolom Actions. Di panel Edit Configuration, atur Release Type menjadi IP-based Canary Release.

    Beta发布

  6. Klik kotak input Application Node IP dan pilih alamat IP untuk rilis canary dari daftar.

    Anda juga dapat memasukkan alamat IP secara manual. Fitur pengisian otomatis indeks didukung.

    Catatan

    Alamat IP adalah alamat IP dari node yang Berlangganan konfigurasi. Pisahkan beberapa alamat IP dengan koma (,).

  7. Setelah Anda memodifikasi konfigurasi, klik Canary Release. Di kotak dialog Comparison of Configuration Content, konfirmasi Current Official Version dan Content To Be Released, lalu klik Release.

Lihat konfigurasi beta

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

  2. Di panel navigasi kiri, pilih Microservices Registry > Instances.

  3. Pada halaman Instances, klik nama instans.

  4. Di panel navigasi kiri, pilih Configuration Management > Configurations.

  5. Temukan konfigurasi yang sedang dalam rilis beta dan klik Edit di kolom Actions.

  6. Di panel Edit Configuration, klik tab Beta(IP) untuk melihat informasi rilis beta.

    BETA

Operasi lainnya

  • Hentikan rilis canary: Pada tab Beta(IP) di panel Edit Configuration, klik Stop Canary Release untuk membatalkan rilis canary.

  • Rilis penuh: Pada tab Beta(IP) di panel Edit Configuration, klik Full Release. Di kotak dialog Comparison of Configuration Content, konfirmasi informasi konfigurasi dan klik Full Release. Konten rilis canary dipublikasikan sebagai versi resmi, dan rilis canary saat ini dihentikan.

Rilis canary berbasis alamat IP memiliki masalah berikut:

  • Pada Nacos Client 1.x, server tidak dapat memperoleh alamat IP klien secara akurat karena koneksi melewati Instance SLB.

  • Pada arsitektur berbasis Kubernetes, pembuatan ulang node dapat mengubah alamat IP mesin. Hal ini dapat menyebabkan kegagalan rilis canary berbasis IP.

Rilis canary berbasis tag

MSE Nacos 2.2.3.3 dan versi yang lebih baru mendukung rilis canary berbasis tag. Anda dapat mengatur tag untuk node aplikasi di sisi klien dan melakukan rilis canary berdasarkan tag tersebut.

Penting
  • Rilis canary berbasis tag didukung di MSE Nacos 2.2.3.3 dan versi yang lebih baru. Anda harus meningkatkan engine Anda ke versi 2.2.3.3 atau yang lebih baru.

  • Tag aplikasi kustom untuk rilis canary didukung di Nacos Client open-source 2.3.2 dan versi yang lebih baru. Anda harus meningkatkan klien Anda ke versi 2.3.2 atau yang lebih baru.

  • Untuk menyuntikkan tag menggunakan Variabel lingkungan, Anda harus meningkatkan Nacos Client Anda ke versi 2.4.2 atau yang lebih baru.

Atur tag aplikasi di sisi klien

Anda dapat mengatur tag untuk aplikasi dalam format pasangan kunci-nilai. Anda dapat menentukan tag dengan salah satu dari tiga cara: properties, parameter JVM, atau Variabel lingkungan. Jika tag memiliki kunci yang sama, urutan prioritasnya adalah properties > parameter JVM > Variabel lingkungan. nacos.config.gray.label adalah tag bawaan default untuk rilis canary di Nacos.

// 1. Lewatkan sebagai properties
Properties properties = new Properties();
properties.put(PropertyKeyConst.SERVER_ADDR, "your endpoint");
properties.put("project.name", "your app name");
properties.put("nacos.config.gray.label","yourgrayname");


// 2. Atur sebagai parameter JVM
Atur parameter startup -Dnacos.config.gray.label=yourgrayname

// 3. Tentukan sebagai Variabel lingkungan
Atur Variabel lingkungan nacos_config_gray_label=yourgrayname

 String dataId = "gray_test_dataid";
 String group = "test-group";
        
 configService.addListener(dataId, group, new Listener() {
        @Override
        public Executor getExecutor() {
            return null;
        }
            
        @Override
        public void receiveConfigInfo(String configInfo) {
            System.out.println("receiveConfig:" + configInfo);
        }
 });

Rilis konfigurasi canary berbasis tag di sisi server

  • Lihat tag pendengar

    Setelah Anda menyuntikkan tag aplikasi di sisi klien, Anda dapat melihat daftar Pendengar untuk konfigurasi di sisi server. Anda juga dapat melihat tag yang dimiliki setiap Pendengar.

    image

  • Rilis konfigurasi canary berbasis tag

    Klik Edit Configuration, pilih Tag-based Canary Release, lalu pilih pasangan tag kunci-nilai yang sudah ada untuk node aplikasi. Anda dapat melihat jumlah node yang cocok dengan pasangan tag yang dipilih.image.png

Setelah Anda merilis versi canary berbasis tag, Anda dapat melihat versi konfigurasi yang cocok dengan klien saat ini di tab Listener Query. Anda dapat melihat detail versi canary saat ini di tab Configuration Details.

Setelah Anda mengamati hasil dari grup rilis canary pertama, Anda dapat memperluas nilai tag untuk secara bertahap memperluas cakupan rilis hingga mencakup semua node. Saat Anda melakukan rilis penuh, versi canary yang sesuai akan dihentikan. Jika terjadi pengecualian bisnis selama rilis canary, Anda dapat mengklik Stop Canary Release untuk secara otomatis mengembalikan perubahan.

Pertanyaan terkait

Penggunaan lanjutan tag aplikasi

Selain mengatur satu tag seperti nacos.config.gray.label, Nacos juga mendukung pengaturan beberapa tag dan penggunaan SPI Collector tag kustom. Hal ini memungkinkan logika kustom yang lebih fleksibel untuk memperoleh tag.

  • Atur tag multi-nilai.

    Nacos mendukung penyuntikan beberapa pasangan tag kunci-nilai ke dalam aplikasi. Anda dapat menentukan parameter nacos.app.conn.labels dalam properties dan parameter JVM. Formatnya adalah nacos.app.conn.labels="k1=v1,k2=v2,k3=v3". Anda juga dapat menentukan parameter nacos_app_conn_labels dalam Variabel lingkungan.

    // 1. Lewatkan sebagai properties
    Properties properties = new Properties();
    properties.put(PropertyKeyConst.SERVER_ADDR, "your endpoint");
    properties.put("project.name", "your app name");
    properties.put("nacos.app.conn.labels","app=demo,site=hangzhou-c,otherkey=othervaue");
    
    // 2. Atur sebagai parameter JVM
    Atur parameter startup -Dnacos.app.conn.labels="app=demo,site=hangzhou-c,otherkey=othervaue"
    
    // 3. Tentukan sebagai Variabel lingkungan
    Atur Variabel lingkungan nacos_app_conn_labels="app=demo,site=hangzhou-c,otherkey=othervaue"
    
    NacosConfigService configService = new NacosConfigService(properties);
    
    String dataId = "gray_test_dataid";
    String group = "test-group";
            
    configService.addListener(dataId, group, new Listener() {
            @Override
            public Executor getExecutor() {
                return null;
            }
                
            @Override
            public void receiveConfigInfo(String configInfo) {
                System.out.println("receiveConfig:" + configInfo);
            }
    });
    
  • Tag aplikasi kustom SPI

    Nacos Client mendefinisikan SPI untuk tag aplikasi kustom. Anda dapat mengimplementasikan antarmuka com.alibaba.nacos.common.labels.LabelsCollector dan mempublikasikan kelas implementasi sebagai layanan untuk membuat SPI tag aplikasi kustom.

    package your.demo.test;
    
    import com.alibaba.nacos.common.labels.LabelsCollector;
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Properties;
    
    /**
     * TestLabelsCollector.
     *
     * @author yourname
     */
    public class TestLabelsCollector implements LabelsCollector {
        
        @Override
        public String getName() {
            return "testlables";
        }
        
        @Override
        public Map<String, String> collectLabels(Properties properties) {
            Map<String, String> labels = new HashMap<>();
            labels.put("test", "implements your labels logic");
            return labels;
        }
    
      
        @Override
        public int getOrder() {
            return 1;
        }
    }

Versi canary paralel

Sebuah konfigurasi dapat memiliki beberapa versi. Versi-versi tersebut mencakup versi resmi, versi canary berbasis IP, dan beberapa versi canary berbasis tag. Saat sebuah konfigurasi memiliki beberapa versi, server Nacos mencocokkan permintaan dan dorongan konfigurasi sesuai urutan prioritas berikut: versi canary berbasis IP > versi canary berbasis tag > versi resmi.

Saat memproses beberapa versi canary berbasis tag, versi- versi tersebut diurutkan berdasarkan nilai bidang prioritas. Nilai prioritas yang lebih besar berarti prioritas yang lebih tinggi. Jika nilai prioritas sama, versi- versi tersebut diurutkan berdasarkan nama. Kami menyarankan agar Anda menetapkan prioritas yang jelas untuk berbagai versi canary.

Saat sebuah node aplikasi memiliki tag, sistem pertama-tama memeriksa apakah ada versi canary berbasis IP yang sesuai dengan alamat IP node tersebut. Jika ada, konfigurasi canary berbasis IP dikembalikan. Jika tidak ada versi canary berbasis IP, sistem mencoba mencocokkan versi canary berbasis tag sesuai prioritas. Jika ditemukan kecocokan, konfigurasi canary yang sesuai dikembalikan. Jika tidak ada versi canary berbasis tag yang cocok, versi resmi konfigurasi dikembalikan. Anda dapat melihat versi konfigurasi yang cocok dengan setiap node aplikasi di halaman Listener Query di Konsol MSE.

Catatan

MSE Nacos 2.3.0 dan versi yang lebih baru mendukung versi canary paralel. Jumlah versi canary yang dapat Anda rilis untuk satu konfigurasi dibatasi. Secara default, Anda dapat merilis maksimal lima versi canary berbasis tag. Jika melebihi batas ini, rilis canary akan diblokir.

Perencanaan tag aplikasi

Saat merencanakan tag untuk node aplikasi, kami menyarankan agar Anda merencanakannya berdasarkan cakupan dampak bisnis. Hal ini memungkinkan Anda melakukan rilis canary bertahap dan mengurangi risiko terkait perubahan. Berikut adalah praktik terbaik umum:

  • Gunakan nama aplikasi sebagai tag. Pertama, lakukan rilis canary pada aplikasi non-kritis. Setelah Anda mengamati dan memastikan tidak ada pengecualian, perluas rilis ke aplikasi inti.

  • Dari sisi bisnis, Anda dapat mengisolasi lalu lintas antara mesin hulu dan hilir di titik masuk lalu lintas. Misalnya, Anda dapat mengidentifikasi sekelompok mesin canary untuk pengguna internal. Anda kemudian dapat mengatur tag canary terpisah untuk mesin-mesin tersebut guna menerapkan rilis canary untuk pengguna internal.

Format tag aplikasi

Kunci dan nilai tag dapat berisi huruf besar dan kecil, angka, garis bawah (_), tanda hubung (-), dan titik (.). Tag dalam format lain diabaikan. Jika Anda menentukan beberapa pasangan kunci-nilai dengan parameter nacos.app.conn.labels, gunakan format "k1=v1,k2=v2,k3=v3" . Misalnya, jika Anda memberikan "k1=v1,k2", parameter k2 diabaikan dan nilai akhir yang diurai adalah k1=v1.