服务注册中心

微服务配置文件的问题

  • 微服务项目太多 配置文件太多不易修改
  • 服务修改配置文件后必须重启才能生效
  • 无法根据配置文件切换运行环境

配置中心解决的问题:

  • 无需重启服务 修改配置文件后直接生效
  • 统一进行配置文件管理
  • 提供统一接口 服务根据接口拉取配置文件

搭建配置中心

运行nacos server没有什么好说的

导入spring cloud和spring cloud alibaba的配置文件


    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2021.1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2020.0.1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

导入nacos config包

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

之前写bootstrap配置文件无法生效 原因是SpringBoot 2.4之后,为了适应云原生,对基础配置文件使用方式做了调整。
所以还得导入

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

在nacos server中创建配置文件

点击右上角+
image
后缀为yaml dataID必须和bootstartp.yml中的spring.application.name一致
image

配置nacos config

首先创建bootstrap配置文件 并配置application name nacos server地址 还有配置文件后缀

spring:
  application:
    name: nacos-config-demo
  cloud:
    nacos:
      config:
        # 配置文件后缀
        file-extension: YAML
        # 服务器ip地址和端口号
        server-addr: 10.0.4.3:8848

server:
  port: 7979

最后在controller中注入配置文件的值 查看配置文件是否生效

@RestController
@RefreshScope
public class ConfigTestController {
    @Value("${name}")
    private String name;

    @GetMapping("/myName")
    public String sayMyName() {
        return  "my name is " + name;
    }
}

修改配置文件后 将会动态更新到服务中
image

多环境配置文件设置

根据文档
$在 Nacos Spring Cloud 中,dataId 的完整格式如下: ${prefix}-${spring.profiles.active}.${file-extension} prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。 spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension} file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
根据文档所示假定application.name = nacos-config-demo
完整的DataId为 nacos-config-demo-spring.profiles.active.后缀 一定要添加后缀 之前没有添加后缀一直报错
如我的配置文件如下

spring:
  application:
    name: nacos-config-demo
  cloud:
    nacos:
      config:
        # 配置文件后缀
        file-extension: YAML
        # 服务器ip地址和端口号
        server-addr: 10.0.4.3:8848
  profiles:
    active: pro
    # 一定要写.yaml 要不找不到文件 我真日了

server:
  port: 7979

那么在nacos server中添加的配置为 nacos-config-demo-pro.yaml才能读取
image

同一微服务 相同项设置

直接创建以application.name为data id的文件即可
如 我的application.name = nacos-config-demo 只要在nacos里创建一个名为nacos-config-demo的配置文件即可
image
然后运行测试
image

不同微服务 共享同一配置文件

方法一:
使用shared-configs
需要配置三个值 分别是dataId group refresh
dataId为配置中心配置文件的dataId group如果为默认可以不配置 refresh为自动刷新 默认false

        shared-configs[0]:
          data-id: reids-config
          refresh: true

方法二:
使用extension-configs 配置基本相同

        extension-configs[0]:
          data-id: reids-config
          refresh: true

extension-configs 比shared-configs优先级高

posted @   RainbowMagic  阅读(50)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示