前言
在当微服务架构中,当实例越来越多,达到数十、数百时,去逐个修改每1个微服务的配置就会让人抓狂,而且很容易出错。
这时我们就需要1个可以集中保存微服务配置的配置中心;
一、配置中心概念
我们可以提取每1个微服务架构中实例的经常变化的配置项,集中保存到1个配置中心里;
当需要修改配置时直接在配置中心进行修改,配置中心发出变更通知,微服务去配置中心主动拉取更新的配置,实现配置的热更新。
二、Nacos配置中心
Nacos不仅可以作为微服务架构的服务注册中心,还能作微服务的集中配置管理中心;
单机启动Nacos
startup.cmd -m standalone
1.添加Nacos配置
2.拉取Nacos配置
2.1.引入Nacos客户端依赖
引入连接Nacos配置管理中心的客户端依赖;
<!--nacos配置管理依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
2.2.添加bootstrap.yml
在user-service中添加一个bootstrap.yml文件,当项目启动时可以连接到Nacos配置管理中心;
spring:
application:
name: user-service
cloud:
nacos:
config:
server-addr: localhost:8848 # nacos 配置中心地址
file-extension: yaml # 文件扩展名
2.3.读取配置信息
读取从Nacos配置中心拉取到的配置信息;
3.配置热更新
当Nacos配置管理中心的配置项修改之后,不重启SpringBoot的前提下进行配置热更新;
3.1.局部更新
3.2.全局更新
3.2.1.实例类
@Configuration注解标注的类,实例化出来的是1个动态代理对象,不能被SpringMVC直接序列化成json数据响应给前端;
引入实体类
4.多环境配置文件
Nacos也支持了对同1服务进行不同环境的个性配置;
4.1.添加Nacos环境
4.2.配置SpringBoot
4.3.
当Nacos、微服务本地的配置文件,同时存在且属性相时,优先级有高低之分:
5.配置环境隔离
当微服务的模块很多时,所有微服务的配置都堆放在一起,看起来会十分臃肿,不易区分和管理。
5.1.新增命名空间
Nameapace其实一个配置环境的集合,接下来创建2个环境;
5.2.创建配置文件
在创建的命名空间中创建相同名称的配置文件
public命名空间
dev命名空间
test命名空间
spring:
application:
name: user-service
# profiles:
# active: dev
cloud:
nacos:
config:
server-addr: localhost:8848 # nacos 配置中心地址
file-extension: yaml # 文件扩展名
namespace: 13c7a5e5-8099-4318-b2f8-9992b23ba454 #指定namespace的id
group: DEFAULT_GROUP # 指定组名
6.Nacos集群
Nacos作为服务注册中心还作为服务配置中心,如果Nacos宕机整个微服务架构就会出现服务雪崩;
在生产环境中为了确保Nacos服务的高可用,我们会Nacos集群,Nacos集群共享1台数据库确保服务注册中心还作为服务配置中心的数据共享;