Nacos简介与使用

Nacos是一个由阿里巴巴开源的动态服务发现和配置管理平台,适用于云原生应用。文章介绍了如何将Nacos集成到SpringBoot项目中,包括依赖引入、版本匹配、服务发现和配置管理的配置,以及配置原理和自动刷新机制。Nacos配置需放在bootstrap.properties中,并且支持基础类型的配置刷新。
摘要由CSDN通过智能技术生成

Nacos简介

Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
网络上对于Nacos的介绍很多,这里不做过多介绍
地址:https://github.com/alibaba/nacos
例子:https://github.com/nacos-group/nacos-examples

Nacos集成SpringBoot

参考nacos-spring-cloud-example例子为主

软件包引入
<properties>
   <spring-boot.version>2.0.4.RELEASE</spring-boot.version>
   <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
</properties>
<dependencyManagement>
   <dependencies>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-dependencies</artifactId>
           <version>${spring-boot.version}</version>
           <type>pom</type>
           <scope>import</scope>
       </dependency>
       <dependency>
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-dependencies</artifactId>
           <version>${spring-cloud.version}</version>
           <type>pom</type>
           <scope>import</scope>
       </dependency>
   </dependencies>
</dependencyManagement>

注意spring-boot.version,spring-cloud.version版本号必须匹配引入,否则在运行时会报错
具体版本信息可参考如下链接:https://spring.io/projects/spring-cloud#overview

服务发现配置依赖包
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>0.2.2.RELEASE</version>
</dependency>
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client</artifactId>
    <version>1.1.0</version>
</dependency>
服务热配置依赖包
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
   <version>0.2.1.RELEASE</version>
</dependency>
项目配置

注意nacos的配置必须在文件bootstrap中,否则热配置不起作用

spring:
  application:
    name: @artifactId@
  cloud:
    nacos:
      discovery:
        server-addr: ${NACOS_HOST:192.168.0.109}:${NACOS_PORT:8848}
        username: nacos
        password: nacos
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        file-extension: yml
        namespace: @nacos.namespace@
        shared-configs:
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
        username: ${spring.cloud.nacos.discovery.username}
        password: ${spring.cloud.nacos.discovery.password}
  profiles:
    active: @profiles.active@

在这个配置中:
@artifactId@:项目中配置的artifactId值
@profiles.active@:默认为dev,可在顶级pom中配置
@nacos.namespace@:默认为public,正式部署时,可以修改为如4b70485d-72dd-44df-a76a-7a3f578a3001等值
注意:shared-configs为项目可引用的公共配置,在实际开发中可以将项目公共的配置部分单独提取出来

配置原理

项目默认的配置名(dataId)格式为: p r e f i x − {prefix}- prefix{spring.profiles.active}.${file-extension}其中

  • ${prefix}:spring.application.name,如mall4cloud-product
  • ${spring.profiles.active}:spring.profiles.active,如dev,test等
  • ${file-extension}:spring.cloud.nacos.config.file-extension,如yaml,properties等

在项目启动时,nacos会远程获取对应的配置,并且和本地的application.yaml配置合并,组合成最新的配置数据

配置截图

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

在这里插入图片描述

代码中配置自动刷新

默认配置刷新

自动刷新配置(dataId= p r e f i x − {prefix}- prefix{spring.profiles.active}.${file-extension})文件配置
如:mall4cloud-product.yml中配置

@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {

    @Value("${useLocalCache:false}")
    private boolean useLocalCache;
    
    @RequestMapping("/get")
    public boolean get() {
        return useLocalCache;
    }
}

关注注解:@RefreshScope

自定义配置刷新
@NacosConfigurationProperties(dataId = "demo.yaml", autoRefreshed = true)
public class DemoConfig {
    private String name;
    private int limit;
}

注意:

  • NacosConfigurationProperties注解只支持基本类型,不支持如list,map,自定义等复杂类型
  • 使用NacosConfigurationProperties注解,需要配置EnableNacosConfig注解

总结

  • 在SpringBoot中,Nacos配置一定要配置在bootstrap文件中
  • Nacos支持最基本配置,不直接支持自定义等复杂配置
  • 如果要支持复杂配置,需要借助Nacos相关API自己实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值