ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-07-02 14:02:30  阅读:201  来源: 互联网

标签:spring 配置 nacos Nacos SpringCloud Alibaba config cloud discovery


目录

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

标签:spring,配置,nacos,Nacos,SpringCloud,Alibaba,config,cloud,discovery
来源: https://www.cnblogs.com/liuyiyuan/p/16436156.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有