Topik ini menjelaskan cara memigrasikan konfigurasi aplikasi dari pusat konfigurasi Apollo yang dikelola sendiri ke pusat konfigurasi MSE Nacos Microservices Engine (MSE).
Prasyarat
Sebuah instance MSE Nacos Edisi Profesional telah dibuat. Untuk informasi lebih lanjut tentang cara membuat instance MSE Nacos, lihat Buat Mesin Nacos.
Deskripsi migrasi
Tabel berikut menjelaskan parameter model Apollo dan model MSE Nacos.
Model Apollo | Model MSE Nacos |
|
|
Dalam topik ini, semua konfigurasi dalam satu lingkungan Apollo dimigrasikan sebagai file ke namespace Nacos berdasarkan aturan pemetaan berikut:
Konfigurasi dalam lingkungan Apollo yang berbeda dapat dipetakan ke instance Nacos yang berbeda atau namespace yang berbeda dari sebuah instance Nacos. Anda dapat menggunakan salah satu metode pemetaan sesuai dengan kebutuhan bisnis Anda.
Parameter
clusterApollo dipetakan ke parametergroupNacos. Konfigurasi{appId}.{namespace}.{format}Apollo dipetakan ke parameterdataIdNacos.Parameter
appIdApollo dipetakan ke parameterappNameNacos.
Langkah 1: Ekspor konfigurasi Apollo
Ekspor konfigurasi Apollo sebagai paket .zip menggunakan alat
Masuk ke konsol Apollo yang dikelola sendiri.
Dalam contoh ini, Anda dapat mengklik tautan untuk pergi ke konsol Apollo yang dikelola sendiri.
Di halaman My Applications, klik nama aplikasi yang diinginkan.
Di pojok kanan atas halaman detail aplikasi, pilih Administrator Tools > Configure Export and Import. Di halaman Configure Export and Import, pilih Select Export Environment dan klik Export.
Anda harus mengekspor konfigurasi dalam lingkungan yang berbeda sebagai file .zip yang berbeda.
Ekspor konfigurasi Apollo sebagai file dengan mengeksekusi pernyataan SQL
Versi sebelumnya dari Apollo tidak mendukung fitur ekspor file. Dalam kasus ini, Anda dapat langsung mengekspor konfigurasi dari database. Anda dapat mengeksekusi pernyataan SQL berikut untuk mengekspor konfigurasi sebagai file JSON atau EXCEL. Ekstensi nama file adalah .json atau .xlsx.
select distinct a.NamespaceId,b.NamespaceName,c.`Comment` AS 'NamespaceDesc' ,b.AppId,b.ClusterName,a.Key,a.Type ,a.Value,a.Comment,a.LineNum from ITEM a left join Namespace b on a.NamespaceId=b.id left join AppNamespace c on c.Name=b.NamespaceName where a.IsDeleted=0 order by a.NamespaceId,a.LineNum ;Langkah 2: Ubah format file
Setelah Anda mengekspor konfigurasi Apollo, Anda akan mendapatkan file .zip, .json, atau .xlsx. Anda harus mengubah format file menjadi format yang dapat langsung diimpor ke Nacos di konsol MSE.
Jalankan perintah berikut untuk mengunduh alat konversi format file: curl -O https://msesync.oss-cn-hangzhou.aliyuncs.com/ApolloConfigTransfer.jar.
Jalankan perintah berikut untuk menjalankan program konversi: java -DsourceFilePath={Jalur lengkap file Apollo yang diekspor} -jar ApolloConfigTransfer.jar.
Setelah program dijalankan, file bernama nacos_config_import_{Nama file Apollo yang diekspor}_{Timestamp}.zip tersedia di direktori saat ini.
Langkah 3: Impor file ke Nacos
Masuk ke konsol MSE, dan pilih wilayah di bilah navigasi atas.
Di panel navigasi sisi kiri, pilih Microservices Registry > Instances. Klik nama instance tersebut.
Di panel navigasi sisi kiri, pilih Configuration Management > Configurations.
Di halaman yang muncul, pilih namespace dari daftar drop-down Namespace dan klik Import Configuration. Di kotak dialog Impor Konfigurasi, unggah file yang diperoleh di Langkah 2.
CatatanSetelah Anda melakukan operasi sebelumnya, konfigurasi berhasil dimigrasikan dari Apollo ke Nacos.
Langkah 4: Ubah dependensi
Ubah dependensi Apollo menjadi dependensi Spring Cloud Alibaba di proyek aplikasi.
Sebelum perubahan:
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>{apollo.version}</version>
</dependency>Setelah perubahan:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.10</version>
</dependency>Jika Anda menggunakan Spring Cloud Alibaba 2023.x, tingkatkan versi ke 2023.0.3.2.
Jika Anda menggunakan Spring Cloud Alibaba 2022.x, tingkatkan versi ke 2022.0.0.2.
Jika Anda menggunakan Spring Cloud Alibaba 2021.x, tingkatkan versi ke 2021.0.6.2.
Jika Anda menggunakan Spring Cloud Alibaba 2.2.x, tingkatkan versi ke 2.2.11.
Langkah 5: Modifikasi kode
Aplikasi mendukung metode konfigurasi dinamis Apollo berikut. Anda dapat memodifikasi kode terkait berdasarkan deskripsi di bagian ini.
Anotasi @Value
Anotasi @Value digunakan untuk merujuk nilai properti dalam bean Spring. Kerangka kerja Spring Cloud Alibaba mendukung anotasi tanpa modifikasi kode.
@RestController
@RefreshScope
public class DemoController {
@Value("testKey")
String testKey = "value";
@RequestMapping("/valuekey")
public String getNacosTestKey() {
return testKey;
}
}Anotasi @ApolloConfig
Anotasi @ApolloConfig digunakan untuk mendaftarkan bean Spring dan secara otomatis menyuntikkan nilai properti yang terkait dengan bidang aplikasi ke dalam bean Spring. Anda dapat mengganti nilai properti dengan menggunakan anotasi standar Spring @ConfigurationProperties.
@Configuration
@ConfigurationProperties
public class CNStackInfoConfig {
private String name;
private int customerCount;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getCustomerCount() {
return customerCount;
}
public void setCustomerCount(int customerCount) {
this.customerCount = customerCount;
}
}API Config Apollo
API Config Apollo dipanggil untuk mendapatkan nilai properti tunggal dalam namespace tertentu.
ConfigService.getAppConfig().getProperty("testkey", "defaulyv1");
ConfigService.getAppConfig("namespace").getProperty("testkey", "defaulyv1");Anda dapat mengenkapsulasi ulang API Config Apollo di Nacos. Contoh kode:
@NacosConfig(dataId="appId1.application.properties",group="group")
Properties nacosConfigProperties;
private void method() {
String value=nacosConfigProperties.getProperty("key","defaultValue");
}Callback ApolloConfigChangeListener
Jika kunci dengan awalan tertentu di Apollo berubah, metode ApolloConfigChangeListener dipanggil kembali.
Contoh kode di Apollo:
/**
* notify listener
* @param configChangeEvent
*/
@ApolloConfigChangeListener(interestedKeyPrefixes = {"data."})
public void apolloNotify(ConfigChangeEvent configChangeEvent) {
System.out.println(configChangeEvent.changedKeys());
}
Contoh kode di Nacos:
@NacosConfigKeysListener(dataId="appId1.application.properties",group="group",interestedKeyPrefixes = {"data."})
public void apolloNotify(ConfigChangeEvent configChangeEvent) {
System.out.println(configChangeEvent.changedKeys());
}Untuk informasi lebih lanjut tentang penggunaan anotasi di pusat konfigurasi Spring Cloud Alibaba Nacos, lihat Anotasi Pusat Konfigurasi Nacos untuk Aplikasi Spring Cloud.
Langkah 6: Ubah titik akhir
Tambahkan konfigurasi Nacos ke kode proyek.
## Konfigurasi Apollo asli # Environment-Dappllo.env={env} apollo.meta=http://127.0.0.1:8070 apollo.bootstrap.enabled=true # Tentukan namespace tempat Anda ingin menambahkan konfigurasi. apollo.bootstrap.namespaces=application,namespace1 # Tentukan cluster. apollo.bootstrap.cluster=default # Tentukan ID aplikasi. app.id=app1Ubah titik akhir ke titik akhir Nacos.
# Tentukan dataId dan group dari konfigurasi yang Anda tambahkan. spring.config.import[0]=nacos:app1.application.properties?group=default&refreshEnabled=true spring.config.import[1]=nacos:app1.namespace1.properties?group=default&refreshEnabled=true # Tentukan titik akhir MSE Nacos. spring.cloud.nacos.config.server-addr=mse-xxx-p.nacos-ans.mse.aliyuncs.com # Tentukan namespace MSE Nacos. spring.cloud.nacos.config.namespace={ID Namespace yang sesuai dengan lingkungan tertentu pusat konfigurasi MSE Nacos, seperti 5babe1ee-1352-xxxx-bd7b-7e7ce892e2ab}Mulai ulang layanan.