微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SpringCloud-Alibaba学习六:Nacos配置中心

目录

1、为什么要使用配置中心

每个微服务都是一个独立的工程,都有一个配置文件,随着项目微服务数量增加,就产生了一些项目配置上的问题:

  1. 配置文件太分散,不便于管理
  2. 配置冗余,通用配置不能共享
  3. 修改配置需要重启服务,不支持配置的动态刷新

因此引出了统一管理配置的需求,使用配置中心组件管理配置数据,实现通用配置共享,修改配置动态刷新。

image

2、主流配置中心对比

image

3、Nacos 配置中心领域模型

元组(namespace、group、dataId)唯一确定一个配置

image

4、配置中心使用

Nacos 配置中心与注册中心是同一个服务,控制台上 配置管理 菜单就是配置中心相关

4.1 控制台创建配置

第一步:创建配置

image

第二步:填写配置信息

image

dateId 规则,详细见官网:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

image

第三步:发布

image

4.2 项目使用

4.2.1 引入依赖

        <!-- 配置中心依赖 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

4.2.2 服务端加载配置信息

配置项目中如何找到 nacos 中的配置信息。

新建文件 bootstrap.properties,当项目启动时会加载这个文件
项目中可以不用application.properties文件

# 从配置中心加载配置文件
# 这里配置了 namespace和group
# 具体文件名(dataId)是通过公式拼接的 ${prefix}-${spring.profiles.active}.${file-extension}
spring.cloud.nacos.config.server-addr=localhost:8848
spring.cloud.nacos.config.username=nacos
spring.cloud.nacos.config.password=nacos
spring.cloud.nacos.config.namespace=qa
spring.cloud.nacos.config.group=DEFAULT_GROUP
spring.cloud.nacos.config.prefix=nacos-demo-config
spring.cloud.nacos.config.file-extension=properties

spring.profiles.active=qa

4.3 多环境切换

新建一个生产环境配置
nacos-demo-config-pro.properties

# 服务端口
server.port=8000
server.servlet.context-path=/nacos-demo-config
# 服务名称 必须有 保证唯一性
spring.application.name=nacos-demo-config
# nacos server 的地址
spring.cloud.nacos.discovery.server-addr=localhost:8848
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
# 服务发布到指定的namespace,不指定认就是public
spring.cloud.nacos.discovery.namespace=pro
# 服务发布到指定的group,认值是DEFAULT_GROUP
spring.cloud.nacos.discovery.group=my-group

4.3.1 环境切换

修改bootstrap.properties配置文件修改 namespace 和 active 为环境 id

image

这种方法不太灵活,每次打包前还得修改配置文件,可以使用添加虚拟机参数的方式,不用修改配置文件

-Dspring.cloud.nacos.config.namespace=pro -Dspring.profiles.active=pro

image

配置太长了,两个参数值是一致的,可以用自定义变量简化

image

image

5、配置动态刷新

nacos-demo-config-pro.properties 配置中随便添加一个配置项

dynamic.config=123123

使用 @Value 读取配置

// 冒号后面是认值
@Value("${dynamic.config:aaa}")
private String dynamicConfig;

这个时候只是成功读取了配置项数据,但是还不能动态刷新数据,在 nacos 控制台上修改数据后,应用中并不是最新数据。

需要添加注解@RefreshScope 才能自动刷新配置

image

6、共享配置

6.1 新建共享配置

文件名:common.properties文件名没有特殊要求


# nacos server 的地址
spring.cloud.nacos.discovery.server-addr=localhost:8848
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
# 服务发布到指定的namespace,不指定认就是public
spring.cloud.nacos.discovery.namespace=pro
# 服务发布到指定的group,认值是DEFAULT_GROUP
spring.cloud.nacos.discovery.group=my-group

# 数据库连接
spring.datasource.driver-class-name=com.MysqL.jdbc.Driver
spring.datasource.url=jdbc:MysqL://localhost:3306/training?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.max-active=60

image

6.2 服务个性配置

删减其他配置里的公共配置项,只保留服务独有的配置

image

6.3 加载共享配置

bootstrap.properties 添加配置项

# 加载共享配置
spring.cloud.nacos.config.shared-configs=common.properties

小问题不支持共享配置的动态刷新,需要添加配置

# 添加配置支持自动刷新通用配置 
spring.cloud.nacos.config.refreshable-dataids=common.properties

7、配置文件的版本管理

Nacos 自带了历史版本的功能

image

image

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐