【微服务】整合Nacos注册中心和动态配置

发布于:2025-02-11 ⋅ 阅读:(40) ⋅ 点赞:(0)

1.Docker安装Nacos

1.拉取镜像
docker pull nacos/nacos-server
2.启动nacos

​ 1. docker run -d:

​ • docker run: 启动一个新的容器。

​ • -d: 以分离(detached)模式运行容器,即后台运行。

​ 2. --name nacos:

​ • 为容器指定一个名称 nacos。

​ 3. --privileged:

​ • 给予容器更多的权限,允许其执行更多系统级的操作。一般用于需要更多系统权限的容器。

​ 4. --cgroupns host:

​ • 使用主机的 cgroup 命名空间。这对于某些需要访问主机 cgroup 的操作可能是必要的。

​ 5. --env MODE=standalone:

​ • 设置环境变量 MODE=standalone。这表示 Nacos 以单机模式运行,而不是集群模式。

​ 6. -p 8848:8848/tcp:

​ • 将主机的 8848 端口映射到容器的 8848 端口。8848 是 Nacos 默认的服务端口。

​ 7. -p 9848:9848/tcp:

​ • 将主机的 9848 端口映射到容器的 9848 端口。这是另一个常用的 Nacos 端口(可能用于监控或其他服务)。

​ 8. --restart=always:

​ • 设置容器的重启策略为“总是重启”。如果容器因任何原因停止,它将自动重启。

​ 9. -w /home/nacos:

​ • 设置容器内的工作目录为 /home/nacos。

​ 10. nacos/nacos-server:

​ • 指定要运行的 Docker 镜像是 nacos/nacos-server。

docker run -d \
  --name nacos \
  --privileged  \
  --cgroupns host \
  --env MODE=standalone \
  -p 8848:8848/tcp \
  -p 9848:9848/tcp \
  --restart=always \
  -w /home/nacos \
  nacos/nacos-server

3.开启8848和9848端口
1.8848
systemctl start firewalld && firewall-cmd --permanent --add-port=8848/tcp && firewall-cmd --reload && firewall-cmd --query-port=8848/tcp
2.9848
systemctl start firewalld && firewall-cmd --permanent --add-port=9848/tcp && firewall-cmd --reload && firewall-cmd --query-port=9848/tcp
4.访问Nacos

http://ip:8848/nacos/

CleanShot 2024-07-28 at 12.43.50@2x

2.项目集成Nacos的服务发现

1.引入依赖
1.sun-dependencies 指定版本
            <!-- springcloud-alibaba版本 2021.1 -->
        		<spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version> 

						<!-- 导入springcloud-alibaba所有依赖版本 -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
2.sun-cloud-nacos引入服务发现依赖和bootstrap依赖
        <!-- Nacos的服务发现 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- cloudalibaba2021版本不会加载bootstrap所以需要手动引入这个依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
3.注意:修改完sun-dependencies的依赖后clean-install一下否则可能出现无法扫描到依赖的问题
2.sun-cloud-home配置Nacos服务发现
1.bootstrap.yml 配置Nacos的服务发现
spring:
  cloud:
    nacos:
      discovery:
        enabled: true # 启用服务发现
        server-addr: ip:8848 # Nacos地址
2.将application.yml的内容放到bootstrap.yml中(完整配置)
server:
  port: 8081 # 服务端口
spring:
  profiles:
      active: ${env-flag} # 配置为application-xxx.yml中的xxx,就可以激活指定的配置文件
  application:
    name: sun-cloud-home # 服务名(注册到Nacos中的名字)
  cloud:
    nacos:
      discovery:
        enabled: true # 启用服务发现
        server-addr: ip:8848 # Nacos地址
3.最后的配置文件目录

CleanShot 2024-07-28 at 13.12.36@2x

4.启动测试

CleanShot 2024-07-28 at 13.13.45@2x

5.sun-cloud-sku也是同理配置服务发现
1.需要注意的是引入sun-cloud-nacos依赖时一定要放到sun-common-log后面,否则日志依赖会冲突

CleanShot 2024-07-28 at 13.21.10@2x

2.微服务注册成功

CleanShot 2024-07-28 at 13.21.46@2x

3.项目集成Nacos的动态配置

1.sun-cloud-home集成
1.引入配置中心依赖
        <!-- Nacos的配置中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

CleanShot 2024-07-28 at 13.26.03@2x

2.bootstrap.yml配置
      #  配置文件的格式为:${prefix}-${spring.profiles.active}.${file-extension}
      #  这里对应的文件名就是:sun-cloud-home-dev.yaml
      config:
        server-addr: ip:8848 # Nacos地址
        prefix: ${spring.application.name} # 配置前缀为服务名
        group: DEFAULT_GROUP # 配置分组
        namespace: # 命名空间,如果在public命名空间则不需要配置
        file-extension: yaml
3.新建一个配置文件与配置的对应

CleanShot 2024-07-28 at 13.33.48@2x

4.测试读取配置文件
1.@RefreshScope开启Nacos动态配置

CleanShot 2024-07-28 at 13.41.06@2x

2.@Value读取Nacos配置
    /**
     * 测试读取Nacos配置
     */
    @Value(value = "${myconfig.test}")
    private String testConfig;
3.接口
    /**
     * 测试读取Nacos配置
     * @return
     */
    @GetMapping("/testConfig")
    public String testConfig() {
        return testConfig;
    }
4.完整代码

CleanShot 2024-07-28 at 13.42.16@2x

5.修改配置,访问测试

CleanShot 2024-07-28 at 13.43.04@2x

CleanShot 2024-07-28 at 13.42.57@2x

2.sun-cloud-sku集成
1.修改bootstrap.yml
      #  配置文件的格式为:${prefix}-${spring.profiles.active}.${file-extension}
      #  这里对应的文件名就是:sun-cloud-sku-dev.yaml
      config:
        server-addr: ip:8848 # Nacos地址
        prefix: ${spring.application.name} # 配置前缀为服务名
        group: DEFAULT_GROUP # 配置分组
        namespace: # 命名空间,如果在public命名空间则不需要配置
        file-extension: yaml
2.注意:如果引入了配置中心就必须配置这个,但是不创建指定文件是没问题的

网站公告

今日签到

点亮在社区的每一天
去签到