SpringCloud Alibaba入门到实战 (三): Nacos服务配置中心

前文已经介绍过,Nacos不仅可以用来做服务注册中心,也可以用来作为服务配置中心;本文就着重讲解Nacos配置中心

1.什么是配置中心?

在传统开发中,一个应用往往有很多的配置项;而在分布式微服务架构中,一个系统往往由多个微服务组成。而每个微服务的配置都不尽相同,传统模式下,修改配置文件还需要停止服务;修改之后,再重新启动;而在微服务架构下,如果配置文件改动较多;一次手动修改配置文件过多,且一个个停止再启动;操作过于麻烦而且容易出错。

Nacos配置管理

配置中心的出现,就是来解决这个问题;将所需的配置文件都储存在Nacos上,服务启动之后自动从Nacos同步相应的配置;当需要修改服务配置时,只需要修改Nacos上相应的的配置文件即可。服务会自动同步配置,不需要重启服务。

2.配置文件匹配规则

Nacos作为服务配置中心,可以存储许多配置文件;而配置文件与服务之间有一套匹配规则
${preifx}-${spring.profile.active}.${file-extenion}

  • prefix 默认为 spring.application.name的值也就是服务名称,也可以通过spring.cloud.nacos.config.prefix来指定
  • spring.profile.active为当前环境对应的profile
  • file-extenion 为配置文件的格式,服务中可以通过spring.cloud.nacos.config.file-extension来配置,目前只支持propertiesymal类型

因此,匹配规则也可以改写为:
${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

3.演示

3.1 创建新Module: nacos-config-6001

创建新Module

创建新Module

指定Module名称

3.2 引入依赖
<!-- Nacos 配置中心-客户端-->
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- Nacos 注册中心-客户端-->
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- web服务 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 监控当前应用的健康状态 Nacos 依赖于它 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

与前文相比,新增依赖spring-cloud-starter-alibaba-nacos-config,其作用是将该服务作为Nacos注册中心的客户端

3.3 创建配置文件

bootstrap.yml

server:
  port: 6001

spring:
  application:
    name: nacos-config
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848  # 将该服务注册到 Nacos 中
      config:
        server-addr: localhost:8878  # 关联配置中心,服务启动后从该地址拉取配置信息
        file-extension: yaml         # 拉取什么格式的配置文件,默认是properties

application.yml

spring:
  profiles:
    active: test

要从Nacos中拉取配置,服务必须先初始化完成,也就是完成服务注册等工作,bootstrap.yml加载的优先级高于application.yml,因此bootstrap.yml中可以写项目初始化相关配置,而application.yml中指定激活环境即可

如上例,spring.profiles.active=test结合上文的匹配规则,指定服务启动之后从Nacos中拉取nacos-config-test.yaml

3.5 在Nacos中创建相应的配置文件

现在Nacos中的nacos-config-test.yaml已经有config.info配置项了

3.4 创建主启动类NacosConfig6001.java
@EnableDiscoveryClient
@SpringBootApplication
public class NacosConfig6001 {

    public static void main(String[] args) {
        SpringApplication.run(NacosConfig6001.class,args);
    }

}
3.5 创建ControllerNacosConfigController.java
@RestController
public class NacosConfigController {

    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/config/info")
    public String getConfigInfo() {
        return configInfo;
    }

}

在上面的配置文件中我并没有写config.info配置,而是在Nacos中;同时代码中创建一个接口/config/info来获取config.info配置项的内容,查看服务启动后是否拉取到了Nacos中的配置

@RefreshScope注解实现配置的自动更新,也就是Nacos上的配置文件修改了之后,不需要重启服务就可以同步到最新的配置。

3.6 测试

启动该项目
启动

访问http://localhost:6001/config/info

配置拉取成功

修改配置

访问http://localhost:6001/config/info

更新后的配置拉取成功

本人能力有限,本文只是我个人的技术分享。如有问题或错误之处;恳请大家不吝赐教。可以在公众号留言讨论;本人定虚心学习。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值