日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

從Apollo遷移到MSE Nacos

本文介紹自建Apollo配置中心如何遷移到MSE Nacos配置中心。

前提條件

已創建MSE Nacos集群,且Nacos版本為專業版。具體操作,請參見創建Nacos引擎

遷移說明

Apollo的模型和MSE Nacos的模型如下:

Apollo模型

MSE Nacos模型

  • 環境(env)。

    說明

    不同的env對應不同的Apollo實例。

  • 應用(appId)。

  • 集群(cluster)。

  • 命名空間(namespace)。

  • 格式(format)。

  • 實例(instance)。

  • 命名空間(namespace)。

  • 分組(group)。

  • 配置(dataId)。

本遷移文檔將單個Apollo環境中的所有配置以文件的方式導入到Nacos中的一個命名空間,將以如下規則進行映射:

  • 不同的Apollo環境可以映射為不同的Nacos實例,也可以映射到同一個Nacos實例下的不同命名空間之中,可自行選擇。

  • Apollo的cluster對應Nacos中的group,Apollo中的{appId}.{namespace}.{format}對應Nacos中的dataId

  • Apollo中的appId將映射為Nacos配置中的應用appName

步驟一:導出Apollo配置

導出工具導出zip包

  1. 登錄自建Apollo控制臺。

    本文以官方Demo地址為例。

  2. 我的應用頁面,單擊目標應用名稱。

  3. 在目標應用詳情頁的右上方,選擇管理員工具 > 配置導出導入。在配置導出導入頁面,勾選選擇導出的環境,然后單擊導出

說明

不同的環境請分獨立導出不同文件,文件名以.zip結尾。

SQL導出文件

低版本Apollo沒有文件導出功能,對于舊版本Apollo,可以從數據庫中直接將配置導出,請按照以下SQL進行配置的導出,可以選擇導出為JSON格式,或者Excel格式,文件名分別以.json.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 ;

步驟二:文件轉換

對Apollo配置進行了導出,可以獲得一個配置導出文件(文件以.zip,.json,.xlsx結尾),需要將文件轉換為可以直接在MSE Nacos控制臺中進行導入的文件格式。

  1. 下載轉換工具:curl -O https://msesync.oss-cn-hangzhou.aliyuncs.com/ApolloConfigTransfer.jar

  2. 執行轉換程序:java -DsourceFilePath={apollo導出文件的完整路徑} -jar ApolloConfigTransfer.jar。

  3. 程序執行成功后,可以在當前目錄下獲得一個名為nacos_config_import_{apollo文件名}_{時間戳}.zip的文件。

步驟三:導入Nacos配置

  1. 登錄MSE管理控制臺,并在頂部菜單欄選擇地域。

  2. 在左側導航欄,選擇注冊配置中心 > 實例列表。單擊目標實例名稱。

  3. 在基礎信息頁面的左側導航欄選擇配置管理 > 配置列表

  4. 在配置列表頁面,選擇對應的命名空間,單擊導入配置,在導入配置頁面上傳步驟二的配置文件。

    說明

    至此,我們已經完成配置從Apllo到Nacos的遷移。

步驟四:更改依賴

在應用項目中將Apollo的依賴更改為Spring Cloud Alibaba的依賴。

修改前:

<dependency>
    <groupId>com.ctrip.framework.apollo</groupId>
    <artifactId>apollo-client</artifactId>
    <version>{apollo.version}</version>
</dependency>

修改后:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>2.2.10</version>
</dependency>
說明
  • 如果您使用的是Spring Cloud Alibaba 2023.x 系列需升級版本至2023.0.3.2。

  • 如果您使用的是Spring Cloud Alibaba 2022.x 系列需升級版本至2022.0.0.2。

  • 如果您使用的是Spring Cloud Alibaba 2021.x 系列需升級版本至2021.0.6.2。

  • 如果您使用的是Spring Cloud Alibaba 2.2.x 系列需升級至2.2.11。

步驟五:改造代碼

應用程序使用Apollo動態配置有以下幾種用法。

@Value注解

該種用法是在一個SpringBean中通過@Value注解引用一個屬性值,spring cloud alibaba框架可以平滑支持,無需代碼改動。

@RestController
@RefreshScope
public class DemoController {
    
    @Value("testKey")
    String testKey = "value";

    
    @RequestMapping("/valuekey")
    public String getNacosTestKey() {
        return testKey;
    }
}

@ApolloConfig注解

該種用法是通過@ApolloConfig,注冊一個SpringBean,并且將對象的字段對應的屬性值自動注入該對象中,可以通過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;
    }
}

Apollo Config API

該種用法是直接調用Apollo的API獲取某個指定namespace中的單個屬性值。

ConfigService.getAppConfig().getProperty("testkey", "defaulyv1");
ConfigService.getAppConfig("namespace").getProperty("testkey", "defaulyv1");

在Nacos中,可以通過二次封裝支持。示例如下:

@NacosConfig(dataId="appId1.application.properties",group="group") 
Properties nacosConfigProperties;

private void method() {
    String value=nacosConfigProperties.getProperty("key","defaultValue");
}

ApolloConfigChangeListener回調

該種用法支持在Apollo中指定前綴的key發生變更時回調當前方法。

Apollo中的用法:

    /**
     * notify listener
     * @param configChangeEvent
     */
    @ApolloConfigChangeListener(interestedKeyPrefixes = {"data."})
    public void apolloNotify(ConfigChangeEvent configChangeEvent) {
        System.out.println(configChangeEvent.changedKeys());
    }
    

Nacos中的用法:

@NacosConfigKeysListener(dataId="appId1.application.properties",group="group",interestedKeyPrefixes = {"data."})
public void apolloNotify(ConfigChangeEvent configChangeEvent) {
    System.out.println(configChangeEvent.changedKeys()); 
}

關于Spring Cloud Alibaba Nacos配置中心注解的更多用法,可參見SpringCloud應用Nacos配置中心注解

步驟六:修改連接地址

  1. 引入Nacos配置

    ##原有apollo的配置 
    #環境-Dappllo.env={env}
    apollo.meta=http://127.0.0.1:8070
    apollo.bootstrap.enabled=true
    #指定引入的命名空間
    apollo.bootstrap.namespaces=application,namespace1
    #指定集群
    apollo.bootstrap.cluster=default
    #指定應用的
    app.id=app1

    修改為Nacos的地址

    #指定加載的配置dataId及group
    spring.config.import[0]=nacos:app1.application.properties?group=default&refreshEnabled=true
    spring.config.import[1]=nacos:app1.namespace1.properties?group=default&refreshEnabled=true
    #指定MSE Nacos的地址
    spring.cloud.nacos.config.server-addr=mse-xxx-p.nacos-ans.mse.aliyuncs.com
    #指定MSE Nacos的命名空間
    spring.cloud.nacos.config.namespace={mse nacos中指定環境對應namespaceid,比如5babe1ee-1352-xxxx-bd7b-7e7ce892e2ab}
  2. 重啟服務。