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需要使用较新的版本。
本文介绍如何在SpringBoot项目中集成Nacos作为配置中心和服务注册中心。包括添加依赖、配置文件详解、配置类定义及测试方法。
1135

被折叠的 条评论
为什么被折叠?



