优购物官方网站化妆品,网站全站建设开题报告范文,如何给一个网站做优化,建站源码程序文章目录 Nacos 配置管理一、统一配置管理1、在Nacos 中添加配置文件2、从微服务拉取配置3、配置实现步骤#xff08;1#xff09;引入 nacos-config 依赖#xff08;2#xff09;添加 bootstrap.yml#xff08;4#xff09;在 nacos 中添加配置 二、配置热更新1、配置热… 文章目录 Nacos 配置管理一、统一配置管理1、在Nacos 中添加配置文件2、从微服务拉取配置3、配置实现步骤1引入 nacos-config 依赖2添加 bootstrap.yml4在 nacos 中添加配置 二、配置热更新1、配置热更新的两种方式1方式一2方式二 三、配置共享1、通服务内配置共享2、不同微服务共享配置 Nacos 配置管理
Nacos除了可以做注册中心同样可以做配置管理来使用
一、统一配置管理
当微服务部署的实例越来越多达到数十、数百时逐个修改微服务配置就会让人抓狂而且很容易出错。我们需要一种统一配置管理方案可以集中管理所有实例的配置 Nacos一方面可以将配置集中管理另一方可以在配置变更时及时通知微服务实现配置的热更新
常见的服务配置中心
Apollo是由携程开源的分布式配置中心。特点有很多比如配置更新之后可以实时生效支持灰度发布功能并且能对所有的配置进行版本管理、操作审计等功能提供开放平台API。并且资料也写的很详细Disconf是由百度开源的分布式配置中心。它是基于Zookeeper来实现配置变更后实时通知和生效的SpringCloud Config这是Spring Cloud中带的配置中心组件。它和Spring是无缝集成使用起来非常方便并且它的配 置存储支持Git。不过它没有可视化的操作界面配置的生效也不是实时的需要重启或去刷新。**Nacos **这是 Sping Cloud alibaba 技术栈中的一个组件前面我们已经使用它做过服务注册中心。其实它也集成了服务配置的功能我们可以直接使用它作为服务配置中心。
1、在Nacos 中添加配置文件 注意
项目的核心配置需要热更新的配置才有放到nacos管理的必要基本不会变更的一些配置还是保存在微服务本地比较好
2、从微服务拉取配置
微服务要拉取nacos中管理的配置并且与本地的application.yml配置合并才能完成项目启动。
但如果尚未读取application.yml又如何得知nacos地址呢
因此spring引入了一种新的配置文件 bootstrap.yaml文件会在application.yml之前被读取
流程如下 3、配置实现步骤
1引入 nacos-config 依赖
dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-config/artifactId
/dependency2添加 bootstrap.yml
不能使用原来的application.yml作为配置文件而是新建一个bootstrap.yml作为配置文件
配置文件优先级(由高到低)
bootstrap.properties - bootstrap.yml - application.properties - application.yml
spring:application:name: service-productcloud:nacos:config:server-addr: 127.0.0.1:8848 #nacos中心地址file-extension: yaml # 配置文件格式profiles:active: dev # 环境标识开发环境4在 nacos 中添加配置
二、配置热更新
最终的目的是修改nacos中的配置后微服务中无需重启即可让配置生效也就是配置热更新
配置中心添加配置
config:appName: product1、配置热更新的两种方式
1方式一
在Value注入的变量所在类上添加注解RefreshScope
RestController
RefreshScope//只需要在需要动态读取配置的类上添加此注解就可以
public class NacosConfigController {Value(${config.appName})private String appName; GetMapping(/nacos-config-test1) public String nacosConfingTest1() {return appName;}
}2方式二
硬编码方式
RestController
public class NacosConfigController {Autowired private ConfigurableApplicationContext applicationContext; GetMapping(/nacos-config-test2) public String nacosConfingTest2() { return applicationContext.getEnvironment().getProperty(config.appName); }
}三、配置共享
当配置越来越多的时候我们就发现有很多配置是重复的这时候就考虑可不可以将公共配置文件提取出来
1、通服务内配置共享
实现步骤 新建一个以 spring.application.name 命名的配置文件然后将其所有环境的公共配置放在里面 新建一个名为service-product-test.yaml配置存放测试环境的配置 新建一个名为service-product-dev.yaml配置存放开发环境的配置 在两个环境文件中配置独有信息 #多配置一段
config:env: test#多配置一段
config:env: dev 添加测试方法 RestController
RefreshScope
public class NacosConfigController {Value(${config.env})private String env; //3 同一微服务的不同环境下共享配置GetMapping(/nacos-config-test3) public String nacosConfingTest3() { return env; }
}2、不同微服务共享配置
不同服务之间实现配置共享的原理类似于文件引入就是定义一个公共配置然后在当前配置中引入 在nacos中定义一个DataID为all-service.yaml的配置用于所有微服务共享 spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql:///shopserverTimezoneUTCusername: root password: root cloud:nacos: discovery: server-addr: 127.0.0.1:8848修改 bootstrap.yaml spring: application: name: service-product cloud: nacos: config: server-addr: 127.0.0.1:8848 #nacos中心地址 file-extension: yaml # 配置文件格式 shared-dataids: all-service.yaml # 配置要引入的配置refreshable-dataids: all-service.yaml # 配置要实现动态配置刷新的配置 profiles: active: dev # 环境标识启动微服务进行测试
共享配置的优先级