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

文章目录

1.Docker安装Nacos

1.拉取镜像
sh 复制代码
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。

sh 复制代码
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
sh 复制代码
systemctl start firewalld && firewall-cmd --permanent --add-port=8848/tcp && firewall-cmd --reload && firewall-cmd --query-port=8848/tcp
2.9848
sh 复制代码
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/

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

1.引入依赖
1.sun-dependencies 指定版本
xml 复制代码
            <!-- 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依赖
xml 复制代码
        <!-- 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的服务发现
yaml 复制代码
spring:
  cloud:
    nacos:
      discovery:
        enabled: true # 启用服务发现
        server-addr: ip:8848 # Nacos地址
2.将application.yml的内容放到bootstrap.yml中(完整配置)
yaml 复制代码
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.最后的配置文件目录
4.启动测试
5.sun-cloud-sku也是同理配置服务发现
1.需要注意的是引入sun-cloud-nacos依赖时一定要放到sun-common-log后面,否则日志依赖会冲突
2.微服务注册成功

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

1.sun-cloud-home集成
1.引入配置中心依赖
xml 复制代码
        <!-- Nacos的配置中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
2.bootstrap.yml配置
yaml 复制代码
      #  配置文件的格式为:${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.新建一个配置文件与配置的对应
4.测试读取配置文件
1.@RefreshScope开启Nacos动态配置
2.@Value读取Nacos配置
java 复制代码
    /**
     * 测试读取Nacos配置
     */
    @Value(value = "${myconfig.test}")
    private String testConfig;
3.接口
java 复制代码
    /**
     * 测试读取Nacos配置
     * @return
     */
    @GetMapping("/testConfig")
    public String testConfig() {
        return testConfig;
    }
4.完整代码
5.修改配置,访问测试
2.sun-cloud-sku集成
1.修改bootstrap.yml
yaml 复制代码
      #  配置文件的格式为:${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.注意:如果引入了配置中心就必须配置这个,但是不创建指定文件是没问题的
相关推荐
咩咩啃树皮11 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
CS创新实验室13 小时前
量子计算机的操作系统:原理、实践与经典架构之对比
架构·操作系统·量子计算
人间凡尔赛14 小时前
WAIC 2026 落幕,AI Agent 开发已进入 Harness 架构时代
人工智能·架构
极客侃科技14 小时前
制造企业 MES/APS 选型:SAP PP/DS 集成、ERP-MES 边界划分与一体化架构要点
运维·架构·制造
晏宁科技YaningAI15 小时前
VoIP系统的工程实现模型:从信令控制到媒体传输的完整架构解析
网络·人工智能·架构·系统架构·信息与通信
剑之所向15 小时前
前后端分离架构
架构
延凡科技16 小时前
多场景落地复盘:端边云架构无人机智能巡检系统设计与实践
大数据·数据结构·人工智能·科技·架构·无人机·能源
大鱼>20 小时前
深入Real-ESRGAN架构:RRDBNet设计精髓与ONNX/TensorRT部署优化
人工智能·深度学习·架构
xexpertS21 小时前
分布式系统过载治理:如何通过较小服务控制请求节奏
微服务·自动化