如何从eureka升级到nacos

2.4.0版本已经从eureka切换为nacos,如果有项目需要升级。可以参考此手册。

微服务更改为nacos的调整方案

下载nacos 1.4.3的部署包,并启动

启动命令:startup.cmd -m standalone
启动nacos 默认的端口号是8848
访问http://localhost:8848/nacos
默认账号是nacos nacos

调整pom的版本号

springboot升级到2.3.2版本,主pom


<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.2.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

springcloud升级到Hoxton.SR9,主pom

 <dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
             <version>Hoxton.SR9</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

添加springcloud-alibaba-2.2.6.RELEASE版本,主pom

 <dependencyManagement>
    <dependencies>
        <!-- spring cloud alibaba 版本 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.2.6.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

调整service的pom,删除之前的eureka client ,添加ali的discovery和config

删除:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

添加:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

调整之前的application.yml 重命名为 bootstrap.yml并且删除其他的配置文件。

目前还没找到本地能覆盖线上的配置,只能通过设置一个线上没有的profile来进行本地化配置

增加spring.cloud.config相关配置

spring:
  main:
    allow-bean-definition-overriding: true
  cloud:
    nacos:
      config:
        #nacos中心地址
        server-addr: 127.0.0.1:8848
        # 配置文件格式
        file-extension: yaml
        namespace: ${spring.profiles.active}
        extension-configs:
          # 需共享的DataId,yaml后缀不能少,只支持yaml/properties
          # 越靠后,优先级越高
          - data-id: common.yaml
            refresh: true

这里nacos的命名空间就使用了profile信息。profile配置为nacos创建的命名空间即可,data-id的只需要配置通用的,服务本身会自己去查找自己服务名.yml的配置信息。

2023-09-28
0