阅读 98

SpringBoot 集成 Nacos实现统一配置管理

SpringBoot集成Nacos实现统一配置管理

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

从三个方面深入源码:

  • 服务注册

  • 服务地址的获取

  • 服务地址变化的感知

在Spring-Cloud-Common包中有一个类org.springframework.cloud.client.serviceregistry.ServiceRegistry,它是SpringCloud提供的服务注册的标准,集成到SpringCloud实现服务注册的组件,都会实现该接口。

public interface ServiceRegistry<R extends Registration>{ void registry(R registration); void deregistry(R registration); void close(); void setStatus(R registration,String status); <T> T getStatus(R registration); } 复制代码

而这个接口的实现类是com.alibaba.cloud.nacos.registry.NacosServiceRegistry,它什么时候触发服务注册动作?

Spring Cloud集成Nacos的实现过程

在Spring-cloud-commons包的META-INF/spring.factories中包含自动装配信息如下:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.springframework.cloud.client.CommonsClientAutoConfiguration=\ org.springframework.cloud.client.ReactiveCommonsClientAutoConfiguration=\ 复制代码

SpringBoot集成Nacos实现统一配置管理

  • 创建一个SpringBoot项目,并集成Nacos配置中心

  • 添加Nacos Config maven依赖

<dependency>             <groupId>com.alibaba.boot</groupId>             <artifactId>nacos-config-spring-boot-starter</artifactId>             <version>0.2.4</version>         </dependency> 复制代码

在application.yml中添加Nacos Server的地址

 nacos:    config:      server-addr: 127.0.0.1:8848 复制代码

创建NacosConfigController类,用于从Nacos Server动态读取配置

@NacosPropertySource(dataId = "server1",autoRefreshed = true) @RestController public class NacosConfigController {     @NacosValue(value = "${info:local}",autoRefreshed = true)     private String info;     @GetMapping("config")     public String getConfig(){         return info;     } } 复制代码

Nacos注解说明:

  • @NacosPropertySource,用于加载dataId为server1的配置源,autoRefreshed标识开启自动更新

  • @NacosValue:设置属性的值,其中info表示key,而Local代表默认值,如果key不存在,则使用默认值,是一种高可用的策略,在实际应用中,需要考虑在配置中心不可用下如何保证服务的可用性。


作者:Gxin
链接:https://juejin.cn/post/7017614332410363935


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐