【微服务】整合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.注意:如果引入了配置中心就必须配置这个,但是不创建指定文件是没问题的
相关推荐
阿图灵5 小时前
Agentic AI 架构入门(九):Agent 通信协议全景——ACP/A2A/AG-UI/MCP
人工智能·ui·架构·ai agent·智能体·mcp·agentic ai
这个DBA有点耶6 小时前
3000万个应用共享一套数据库:多租户“逻辑表”架构是如何做到的?
数据库·架构·dba
消失的旧时光-19436 小时前
第一篇:Ktor Client 到底是什么?从 Retrofit 迁移理解 Ktor 网络请求架构
网络·架构·retrofit·ktor·dsl
zlinear数据采集卡6 小时前
D223的PWM电机控制:6路独立脉冲+加减速算法深度解析
arm开发·stm32·嵌入式硬件·算法·fpga开发·架构
香菜TTT7 小时前
主从架构锁丢失问题-----RedLock
架构
Rain的Java大神之路7 小时前
MQ重复消费问题怎么解决
java·经验分享·后端·面试·架构·rabbitmq·rocketmq
这个DBA有点耶7 小时前
DBA进阶之路:从“修数据库”到“管架构债”
数据库·架构·dba
珠***格8 小时前
通信链路全打通:西格电力四可装置的 4G/5G + 加密认证技术详解
大数据·数据库·分布式·5g·架构·能源
艾德克斯9 小时前
从OCP APAC Summit 2026看AI数据中心供电架构演进与测试挑战
人工智能·ai·架构·数据中心·开闭原则·供电测试
AI产品测评官9 小时前
从技术选型视角:AI招聘寻源类Agent的技术架构与落地实测分析
人工智能·架构·求职招聘