【微服务】整合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.注意:如果引入了配置中心就必须配置这个,但是不创建指定文件是没问题的
相关推荐
踩着两条虫7 小时前
「AI + 低代码」的可视化设计器
开发语言·前端·低代码·设计模式·架构
耕烟煮云10 小时前
本文深入解析AI Native产品设计的核心范式——Linear三层架构模型
人工智能·架构
阿洛学长12 小时前
CSDN、掘金、简书博客文章如何转为Markdown?
运维·数据库·架构·php·持续部署
一切皆是因缘际会12 小时前
AI技术新风口:边缘计算与智能体协同,解锁产业落地新范式
大数据·人工智能·安全·ai·架构·语音识别
轻刀快马12 小时前
AI Agent 架构里的隐形杀手:MCP 协议下 ProcessBuilder 的 64KB 死锁陷阱
架构
ze^014 小时前
Day01 Web应用&架构搭建&域名源码&站库分离&MVC模型&解析受限&对应路径
安全·web安全·架构·mvc·安全架构
刀法如飞15 小时前
Palantir Ontology 数据结构分析,与ER/OOP/DDD有什么区别?
人工智能·算法·架构
狼与自由15 小时前
微服务网关演化
微服务·云原生·架构
大江东去浪淘尽千古风流人物18 小时前
【SANA-WM】分钟级世界模型:混合线性扩散Transformer与双分支相机控制深度解析
人工智能·深度学习·架构·spark·机器人·transformer·wm
LONGZETECH18 小时前
新能源汽车VR仿真教学软件技术解析|职教数字化实训解决方案
大数据·架构·汽车·vr·汽车仿真教学软件