SpringBoot Nacos 配置中心

本文介绍如何在SpringBoot项目中集成Nacos作为配置中心和服务注册中心。包括添加依赖、配置文件详解、配置类定义及测试方法。

Spring boot的NACOS配置中心和注册中心

1.添加依赖

<!-- 配置 -->
<dependency>
	<groupId>com.alibaba.boot</groupId>
	<artifactId>nacos-config-spring-boot-starter</artifactId>
	<version>0.2.12</version>
</dependency>
<!-- 服务注册发现 -->
<dependency>
     <groupId>com.alibaba.boot</groupId>
     <artifactId>nacos-discovery-spring-boot-starter</artifactId>
     <version>0.2.12</version>
</dependency>

2.application.yml配置

server:
  port: 9011
  servlet:
    context-path: /
spring:
  application:
    name: SPRING_BOOT_SERVICE_DISCOVERY

nacos:
  config:
    username: nacos
    password: nacos
    bootstrap:
      log-enable: true # 支持日志级别的加载时机(如果需要集成dubbo,请使用此配置加载时机)
      enable: true # 设置参数nacos.config.bootstrap.enable=true,开启配置预加载功能
    serverAddr: 127.0.0.1:8848
    namespace: c55990be-d551-4846-8b55-eb6681688aa7
    group: CTL
    dataIds: application
    remoteFirst: true #允许nacos上的配置优先于本地配置
    autoRefresh: true # 主配置 是否开启自动刷新 (false:不监听属性变化,true:监听属性变化,但是对应的属性注解上也必须设置autoRefreshed = true才可以实时更新)
    enableRemoteSyncConfig: false # 主配置 开启注册监听器预加载配置服务(除非特殊业务需求,否则不推荐打开该参数)
    type: yaml
    #configRetryTime: 300 # 主配置 重试时间 ----------新版本的nacos使用的是grpc协议通讯,没有使用http进行轮询监听配置了,该配置无效
    #configLongPollTimeout: 5 # 主配置 配置监听长轮询超时时间 ----------新版本的nacos使用的是grpc协议通讯,没有使用http进行轮询监听配置了,该配置无效
    #maxRetry: 10 # 主配置 最大重试次数  ----------新版本的nacos使用的是grpc协议通讯,没有使用http进行轮询监听配置了,该配置无效

  discovery:
    username: nacos
    password: nacos
    auto-register: true
    serverAddr: 127.0.0.1:8848
    namespace: c55990be-d551-4846-8b55-eb6681688aa7
    register:
      clusterName: Test
      groupName: CTL
      enabled: true
      ephemeral: true #应用临时实例的ephemeral属性值决定着服务实例的生命周期管理方式
      healthy: true
      ip: 127.0.0.1 # 正常情况下不用,指定服务实例在注册到 Nacos 时使用的 IP 地址
      port: 9011
      weight: 0.6 #权重

备注:

在Nacos中,应用临时实例的ephemeral属性值决定着服务实例的生命周期管理方式。具体来说:

当ephemeral的值设置为true时,该服务实例被认为是临时服务。这意味着服务实例的注册信息会随着微服务应用的生命周期变化而自动更新。如果微服务应用停止或与Nacos服务器的连接中断,Nacos将会自动移除这些临时服务实例的注册信息。这类服务适用于Kubernetes (K8S)、Docker、云环境等,其中IP地址变化或应用频繁重启较为常见。

相反,如果ephemeral的值设置为false,服务实例则被定义为持久化服务。这类服务实例的数据会在Nacos服务器中持久化存储,即使微服务应用发生故障或重启,服务实例信息也不会被自动删除。持久化服务适用于需要长期存在且不随应用状态改变的服务,例如MySQL服务或者需要进行审计维护的场景,如DNS服务。

综上所述,通过设置ephemeral属性为true或false,可以灵活地控制服务实例的注册行为,以适应不同的微服务架构需求。在大多数动态云环境中,推荐使用临时服务(ephemeral=true),而在需要稳定性和长期性的场景下,则应选择持久化服务(ephemeral=false)。

2.配置类

@Data
@ConfigurationProperties(prefix = "test")
@NacosConfigurationProperties(prefix = "test", dataId = "test", groupId = "DEFAULT_GROUP", type = ConfigType.PROPERTIES, autoRefreshed = true)
public class TestProperties {

    private String appId;

    private String server;
    
    private List<String> ips;

}

3.测试

@RestController
@EnableConfigurationProperties(TestProperties.class)
public class NacosController {

    @Autowired
    private TestProperties testProperties;

    @RequestMapping(value = "getTest", method = RequestMethod.GET)
    @ResponseBody
    public Object get() {
        return testProperties;
    }
}

4.nacos添加配置
注意文件格式
5.注意事项

  • springboot1.x的对应nacos的0.1.x,springboot2.x对应nacos的0.2.x。
    本人测试的使用的SpringBoot
  • nacos-config 0.2.7 提供了prefix处理前缀的功能,而nacos 0.2.1的还没有。
  • nacos-server 1.2.1版本在md5校验方面存在bug,在1.2.3版本才修复。
  • nacos-server 2.4.0 采用的是grpc协议通讯,故nacos-client需要使用较新的版本。

附录

参考文档

nacos官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值