SpringCloud整合Nacos配置中心

📝 学技术、更要掌握学习的方法,一起学习,让进步发生
👩🏻 作者:一只IT攻城狮 ,关注我,不迷路 。
💐学习建议:1、养成习惯,学习java的任何一个技术,都可以先去官网先看看,更准确、更专业。
💐学习建议:2、然后记住每个技术最关键的特性(通常一句话或者几个字),从主线入手,由浅入深学习。
❤️ 《SpringCloud入门实战系列》解锁SpringCloud主流组件入门应用及关键特性。带你了解SpringCloud主流组件,是如何一战解决微服务诸多难题的。

在这里插入图片描述

一、Nacos

Nacos 作为分布式微服务架构体系中的一个优秀组件,可以替代Eureka做服务注册中心,可以替代Config做服务配置中心。让微服务的发现、管理、共享、组合更加容易。Nacos = Eureka + Config + bus
Nacos作为服务注册中心使用参看: SpringCloud整合Nacos服务注册与发现

Nacos作为服务配置中心:Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,可以在 Nacos Server 集中管理 Spring Cloud 应用的外部属性配置。

二、Nacos 服务端初始化

下载并启动好Nacos Server。启动方式参看 Nacos简介、安装、运行详解。接下来在 Nacos 的控制台新增一个dataId为yaml为扩展名的配置,如下所示:

在这里插入图片描述
在这里插入图片描述

注意📢:dataId是以 properties(默认的文件扩展名方式)为扩展名,也可以支持yaml。

三、Nacos客户端配置

1、添加依赖

父pom中引入spring-cloud-alibaba-dependencies依赖后,子pom中引入spring-cloud-starter-alibaba-nacos-config依赖:

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

注意:如果想使用bootstrap文件配置,springboot2.4以后的版本需要添加spring-cloud-starter-bootstrap依赖:

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

2、启动类

@SpringBootApplication
@ComponentScan(basePackages = {"com.qytest"})
@MapperScan(basePackages = {"com.qytest.**.dao"})
@EnableDiscoveryClient
public class CloudPayment {
    public static void main(String[] args) {
        SpringApplication.run(CloudPayment.class, args);
    }
}

Spring Cloud 原生注解 @EnableDiscoveryClient 开启服务注册发现功能,作为配置中心时不加也可以。

3、yml配置

在日常开发中如果遇到多套环境下的不同配置,可以通过Spring 提供的 ${spring.profiles.active} 这个配置项来配置。所以这里我们使用多环境配置文件。

bootstrap.yml(用来指定激活的环境)

spring:
  profiles:
    active: dev

bootstrap-dev.yml(注意层级关系)

server:
  port: 8001

spring:
  application:
    name: cloud-payment #微服务应用的名字
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource  #当前数据源操作类型
    driver-class-name: com.mysql.jdbc.Driver  #mysql驱动包
    url: jdbc:mysql://localhost:3306/test?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false #useSSL安全加固
    username: root
    password: 12345678
  cloud:
    nacos:
      discovery:
        # 配置 nacos 的服务地址
        server-addr: http://localhost:8848
      config:
        ## nacos 作为配置中心地址
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        ## 指定yaml格式的配置,默认为:properties
        file-extension: yaml
        ## 分组 默认为:DEFAULT_GROUP
        ## group: DEFAULT_GROUP
        ## 命名空间 默认为 public
        ## namespace: public

management:
endpoints:
  web:
    exposure:
      include: '*'

mybatis-plus:
  mapper-locations: classpath*:mapper/**/*.xml
  #实体扫描,多个package用逗号或者分号分隔
  typeAliasesPackage: com.qytest.springcloud.entitites

dataid 规则 :
$ {prefix}-$ {spring.profiles.active}.$ {file-extension}
$ {spring.application.name}-$ {spring.profiles.active}.${file-extension}
所以本例中应该去nacos拉取dataid为cloud-payment-dev.yaml的配置。也就是开头Nacos 服务端初始化我们创建的配置。

注意📢:当使用域名的方式来访问 Nacos 时,spring.cloud.nacos.config.server-addr 配置的方式为 域名:port。 例如 Nacos 的域名为abc.com.nacos,监听的端口为 80,则 spring.cloud.nacos.config.server-addr=abc.com.nacos:80。 注意 80 端口不能省略。

4、测试

编写简单的业务类ConfigController.java,添加自动刷新注解@RefreshScope

@RestController
@RefreshScope
public class ConfigController {
    //从nacos读取配置文件中内容
    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/config/info")
    public CommonResult<String> getConfigInfo() {
        return new CommonResult<>(200, "success", configInfo);
    }
}

Spring Cloud 原生注解 @RefreshScope 实现配置自动更新。再学习SpringCloud Config配置中心时提到过这个注解。

访问http://localhost:8001/config/info 成功读取到nacos界面配置的文件中的内容。

在这里插入图片描述

Nacos支持配置的动态更新。也可以通过配置 spring.cloud.nacos.config.refresh.enabled=false 来关闭动态刷新

四、自定义配置

1、自定义Namespace(默认Public)

关于Nacos 的 Namespace 用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。默认使用的是 Nacos 上 Public 这个namespace。

如果需要使用自定义的命名空间,可以通过以下配置来实现:

在这里插入图片描述
在这里插入图片描述

spring:
 cloud:
  nacos:
   config:
        namespace: cca3ee80-0eb9-4813-9284-55b975ef2640

2、自定义 Group 配置(默认DEFAULT_GROUP)

在这里插入图片描述

  cloud:
    nacos:
      discovery:
       config:
        group: MY_GROUP

3、自定义扩展的 Data Id 配置

Spring Cloud Alibaba Nacos Config 从 0.2.1 版本后,可支持自定义 Data Id 的配置。
通过自定义扩展的 Data Id 配置,既可以解决多个应用间配置共享的问题,又可以支持一个应用有多个配置文件。

Spring Cloud Alibaba Nacos Config 目前提供了三种配置能力从 Nacos 拉取相关的配置。

  • A: 通过 spring.cloud.nacos.config.shared-configs[n].data-id 支持多个共享 Data Id 的配置

  • B: 通过 spring.cloud.nacos.config.extension-configs[n].data-id 的方式支持多个扩展 Data Id 的配置

  • C: 通过内部相关规则(应用名、应用名+ Profile )自动生成相关的 Data Id 配置

当三种方式共同使用时,他们的一个优先级关系是:A < B < C

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只IT攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值