当前位置: 首页 > article >正文

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

文章目录

    • 1.Docker安装Nacos
        • 1.拉取镜像
        • 2.启动nacos
        • 3.开启8848和9848端口
          • 1.8848
          • 2.9848
        • 4.访问Nacos
    • 2.项目集成Nacos的服务发现
        • 1.引入依赖
          • 1.sun-dependencies 指定版本
          • 2.sun-cloud-nacos引入服务发现依赖和bootstrap依赖
          • 3.注意:修改完sun-dependencies的依赖后clean-install一下否则可能出现无法扫描到依赖的问题
        • 2.sun-cloud-home配置Nacos服务发现
          • 1.bootstrap.yml 配置Nacos的服务发现
          • 2.将application.yml的内容放到bootstrap.yml中(完整配置)
          • 3.最后的配置文件目录
          • 4.启动测试
          • 5.sun-cloud-sku也是同理配置服务发现
            • 1.需要注意的是引入sun-cloud-nacos依赖时一定要放到sun-common-log后面,否则日志依赖会冲突
            • 2.微服务注册成功
    • 3.项目集成Nacos的动态配置
        • 1.sun-cloud-home集成
          • 1.引入配置中心依赖
          • 2.bootstrap.yml配置
          • 3.新建一个配置文件与配置的对应
          • 4.测试读取配置文件
            • 1.@RefreshScope开启Nacos动态配置
            • 2.@Value读取Nacos配置
            • 3.接口
            • 4.完整代码
          • 5.修改配置,访问测试
        • 2.sun-cloud-sku集成
          • 1.修改bootstrap.yml
          • 2.注意:如果引入了配置中心就必须配置这个,但是不创建指定文件是没问题的

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.注意:如果引入了配置中心就必须配置这个,但是不创建指定文件是没问题的

http://www.kler.cn/a/453324.html

相关文章:

  • Linux 下处理 ^M 字符的最佳实践
  • nvidia docker, nvidia docker2, nvidia container toolkits区别
  • 美国辅料查询之FDA批准药用辅料数据库(IID数据库)
  • Nginx界的天花板-Oracle 中间件OHS 11g服务器环境搭建
  • JWT令牌与微服务
  • iClient3D for Cesium 加载shp数据并拉伸为白模
  • Linux系统之tee命令的基本使用
  • Java获取自身被调用点
  • 【ES6复习笔记】Symbol 类型及其应用(9)
  • 前端学习DAY27(盒子模型内边距)
  • Idea 配置环境 更改Maven设置
  • Python爬虫获取1688详情接口详细解析
  • 红魔电竞PadPro平板解BL+ROOT权限-KernelSU+LSPosed框架支持
  • yum 查看已安装软件信息
  • 【无线通信】蜂窝系统——干扰与系统容量
  • 磁盘结构、访问时间、调度算法
  • 微信小程序给外面的view设置display:flex;后为什么无法给里面的view设置宽度
  • OVS简介
  • Elasticsearch-模糊查询
  • C语言学习(10)—递归
  • git回退指定版本/复制提交id
  • 【算法题解】Berland 路标限速问题(Follow Traffic Rules)
  • Google Cloud Architect 认证考试错题集7
  • 华三M-LAG场景下,部分MAC内的流量泛洪导致端口流量打满
  • 信创数据防泄漏中信创沙箱是什么样的安全方案
  • 配置带外与更改密码