上海网站建设小程序,外贸网站建设 双语网站建设,网站开发需要技术,wordpress视频悬停Nacos配置管理
统一配置管理#xff1a;一次配置更改并支持热更新。将核心配置存储到配置管理服务#xff0c;当微服务启动时会自动读取配置管理服务中的配置信息并结合本地配置启动。当配置改动时#xff0c;配置管理服务会自动通知微服务#xff0c;微服务读取新配置并自…Nacos配置管理
统一配置管理一次配置更改并支持热更新。将核心配置存储到配置管理服务当微服务启动时会自动读取配置管理服务中的配置信息并结合本地配置启动。当配置改动时配置管理服务会自动通知微服务微服务读取新配置并自动热更新无需重新启动。 配置中心的思路是 1、首先把项目中各种配置全部都放到一个集中的地方进行统一管理并提供一套标准的接口。2、当各个服务需要获取配置的时候就来配置中心的接口拉取自己的配置。 3、当配置中心中的各种参数有更新的时候也能通知到各个服务实时的过来同步最新的信息使之动态更新。 Hello配置管理 使用nacos作为配置中心其实就是将nacos当做一个服务端将各个微服务看成是客户端将各个微服务的配置文件统一存放在nacos上然后各个微服务从nacos上拉取配置即可。 对应的依赖为spring-cloud-starter-alibaba-nacos-config注意启用配置中心后需要配置文件写到bootstrap配置文件中。只能是bootstrap.yml或bootstrap.properties优先级等级为bootstrap.properties - bootstrap.yml - application.properties - application.yml
需要注意SpringCloud默认将bootstrap移除了需要手动添加bootstrap依赖
dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-bootstrap/artifactId version3.1.5/version/dependency消费者配置
spring.cloud.nacos.config.server-addrlocalhost:8848 服务配置中心的配置spring.cloud.nacos.config.file-extensionyaml 配置使用的后缀名spring.cloud.nacos.config.prefixnacos-consumer 配置DataId名称默认就是服务名称spring.cloud.nacos.config.groupDEFAULT_GROUP 默认分组名称spring.profiles.activedev 读取指定配置文件配置参数dev开发环境、prod生产环境、test测试环境
配置设置的概念
命名空间Namespace不同的项目可以分为不同的命名空间。配置分组Group根据项目的不同环境可以一个分组。配置集Data ID服务不同环境的不同配置就是一个配置集 使用nacos配置管理 DataID就是配置文件名称不能冲突采用【微服务名称-profile.yaml或properties】如user-service-dev.yaml。默认DataId为spring.cloud.nacos.config.prefix后面可以添加spring.profiles.active值对应的文件后缀为spring.cloud.nacos.config.file-extension
分组采用默认即可。配置内容应该只有可能有热更新需求的配置信息不是将所application.yml中内容全部拷贝。例如数据库地址一般不会频繁更新的所以添加到配置管理中就不合适。这里适合一些开关类型或者模板类型的配置pattern.dateformatyyyy-MM-dd
微服务配置拉取
项目启动先读取nacos中的配置文件然后读取本地配置文件application.yaml合并后再创建spring容器加载受管bean。项目中提供bootstrap.yml优先application.yml这里配置nacos地址从而实现nacos中配置信息的读取在控制器中读取配置信息进行验证
Value(${pattern.dateformat})
private String dateFormat;
GetMapping(now)public String now(){ return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateFormat));}配置热更新
可以在nacos控制台上手动编辑更新配置信息。事实上nacos中的配置文件变更后微服务无需重启就可以感知。需要通过2种配置方式实现 方式1在Value注入的变量所在类上添加注解RefreshScope
Slf4j RestController RequestMapping(/user)RefreshScopepublic class UserController { Value(pattern.dateformat) private String dateFormat;}在微服务日志中可以看到服务更新的自动通知 方式2使用ConfigurationProperties注解
Component DataConfigurationProperties(prefixpattern)public class PatternProperties { private String dataformat;}修改控制器类通过PatternProperties组件获取配置信息
Autowiredprivate PatternProperties properties;GetMapping(now)public String now() { return LocalDateTime.now().format(DateTimeFormatter.ofPattern(properties.getDateformat()); }推荐配置更新时优先考虑使用ConfigurationProperties而不是ValueRefreshScope
多环境配置共享
某个配置在开发、测试、生产等不同环境下的数据值一致每个配置文件中都写一次是不合理的而且修改时必须在每个配置文件中进行修改就更加的不合理了。微服务启动时会从nacos读取多个配置文件
【spring.application.name】-【spring.profiles.active】.yaml例如userservice-dev.yaml【spring.application.name】.yaml例如userservice.yaml【spring.application.name】没有后缀例如userservice无论profile如何变化[spring.application.name].yaml文件一定会被加载因此多环境共享配置可以写入这个配置文件中。多配置优先级服务名-profile.yaml 服务名.yaml 本地配置