哈喽各位同学们大家好呀 今天是开发者学院中课程“Spring Cloud微服务架构设计与开发实战”的章节三的“Nacos作为Spring Cloud配置中心”干货总结~是一起学习新课程吧
课程链接以及图谱地址小编已经为大家指路了 搭配学习效果更佳
课程名称 Nacos作为Spring Cloud配置中心
课程地址 https://developer.aliyun.com/learning/course/60/detail/1098
图谱名称 Alibaba Java 技术图谱
图谱地址 https://developer.aliyun.com/graph/java
Nacos作为Spring Cloud配置中心
(一)Nacos作为Spring Cloud配置中心??
1、Nacos配置中心?
阿里开源Nacos的另外一个功能 统一配置中心 是对于方式集群大规模集群非常重要的一个功能点 阿里开源Nacos 实际是集注册中心和配置中心为一身 是一个非常全能的工具。?
Nacos启动阶段配置文件稍微特殊一点 有一个bootstrap文件? 是加载普通配置之前执行的一个动作 优先启动的一个文件系统 会优先读取文件中的一些配置数据。?
Spring Cloud Alibaba?Nacos?Config??Nacos提供用于存储配置和其他元数据的?key/value?存储 ??
为分布式系统中的外部化配置提供服务器端和客户端支持。??
使用Spring Cloud Alibaba?Nacos?Config ??
可以在Nacos?Server?集中管理Spring Cloud?的外部属性配置。?
Alibaba?Nacos?Config?是Config Server?和Client?的替代方案 ??
客户端和服务器上的概念与?Spring Environment?和PropertySource有?着一致的抽象 ?
bootstrap?启动阶段 配置被加载到?Spring?环境中。??
当应用程序通过部署管道从开发到测试再到生产时 ??
可以管理不同环境dev\test\pro的配置 ??
并确保应用程序具有迁移时需要运行的所有内容。?
?
2、Nacos配置服务??
Nacos也支持配置服务 ??统一微服务集群的配置信息 ?
支持配置的动态更新 ?
可支持profile粒度的配置 ?
支持自定义?namespace?的配置 做资源管理配置 数据可到开发测试 生产环境有了命名空间 里面找对应的一个配置数据 进行推送下发 主要便于实现配置的更新和推送管理 ?
支持自定义?Group?的配置 主要是分组去管理服务的 ?
支持自定义扩展的?Data Id?配置 ?
配置的优先级 ?
可以通过Spring的${spring.profiles.active}?配置多套环境 ?
微服务项目需要spring-cloud-starter-alibaba-nacos-config ?
支持两种配置文件格式:??
bootstrap.properties??
bootstrap.yml?
?
二 微服务集成Nacos配置中心??
1、Nacos配置中心实战??
?启动Nacos服务??
?Nacos添加配置参数??
?修改客户端 连接Nacos配置中心??
?注意 ?
版本2.1.x.RELEASE对应的是Spring Boot 2.1.x?版本。?
版本2.0.x.RELEASE对应的是Spring Boot 2.0.x?版本 ?
版本1.5.x.RELEASE对应的是Spring Boot 1.5.x?版本。?
2、客户端配置??
? dependency ??
? groupId com.alibaba.cloud /groupId ??
? artifactId spring-cloud-starter-alibaba-nacosconfig /artifactId ??
? /dependency ?
?
3、微服务集成Nacos配置中心?
?bootstrap.propertie配置Nacos?Server?地址??
?spring.application.name nacos-config??
?spring.cloud.nacos.config.server-addr 127.0.0.1:8848?
?
4、Nacos支持动态刷新配置??
?通过配置?spring.cloud.nacos.config.refresh.enabled false?来关闭动态刷新?
动态更新 启动的更新本质上是自动会刷新配置 一边改完以后 另一边会迅速读到通过线程读取 线程去远端去进行拉取操作。?
原始的APP协议 本身并不是双工通信 是单向的。?
?
更新配置实战效果??
?
6、Spring Cloud配置参数变?
?
?
7、Spring Cloud配置参数变化?
?
?
Spring Cloud配置参数变化??
?
Nacos配置中心其他功能??实战案例?
配置服务可以是普通的微服务项目 普通微服务项目改造config依赖 因为要实现配置 如简单的配置推送拉取 这是config独有的。?
?
配置文件定义就按照下图规则来做?
?
关键的配置 选的活动状态是dev dev模式就是开发环境 要保证和配置中心要统一 这里端口稍微改了 8787 通过这样一个配置 读取Nacos配置中心最新的配置数据 然后在本地做一个展示。?
?
本地展示 通过拟定了一个简单动态的变量来测试 主要是定义了一个用户名 一个密码 两个变量 通过围绕注解 让它自动去加载最新的变量值。?
?
启用注解 refresh主要作用自动去背后线程去拉取注册中心最新的值。?
?
默认值 一个是Java 一个是1234qwer。?
?
通过接口来调用 返回最新的用户密码 所以这里面如果之前用户和密码是Java和1234qwer的话 正常配置中心推送完新的配置后 重新查询 就应该返回新的值。?
正常加载bootstreap再加载?Applcation?
?
支持profile粒度的配置??spring-cloud-starter-alibaba-nacos-config?在加载配置的时?候 不仅仅加载了以dataid?为${spring.application.name}.${file-extension:properties}?为前?缀的基础配置。?
?还加载了dataid为?${spring.application.name}${profile}.${file-extension:properties}?的基础配置。??
?在日常开发中如果遇到多套环境下的不同配置 可以通过Spring?提供的?${spring.profiles.active}?这个配置项来配置。??
?spring.profiles.active dev??
?spring.profiles.active test??
?spring.profiles.active pro?
?
支持自定义?namespace?的配置???用于进行租户粒度的配置隔离。不同的命名空间下 可以存在相同的?Group?或?Data ID?的配置。Namespace?的常用场景之一是不同环境的配?置的区分隔离 例如开发测试环境和生产环境的资源 如配置、服务 隔离?等。??
?在没有明确指定?${spring.cloud.nacos.config.namespace}?配置的情况下 ?默认使用的是?Nacos?上?Public?这个namespae。如果需要使用自定义的命?名空间 可以通过以下配置来实现 ??
?spring.cloud.nacos.config.namespace b3404bc0-d7dc-4855-b519570ed34b62d7??
?该配置必须放在?bootstrap.properties?文件中。此外?spring.cloud.nacos.config.namespace?的值是?namespace?对应的?id ?id?值可以在?Nacos?的控制台获取。并且在添加配置时注意不要选择其他的?namespae 否则将会导致读取不到正确的配置。?
?
支持自定义?Group?的配置???在没有明确指定?${spring.cloud.nacos.config.group}?配置的情?况下 ?默认使用的是?DEFAULT_GROUP?。??
?如果需要自定义自己的?Group 可以通过以下配置来实现 ??
?spring.cloud.nacos.config.group DEVELOP_GROUP??
?该配置必须放在?bootstrap.properties?文件中。并且在添加配?置时?Group?的值一定要和?spring.cloud.nacos.config.group?的配置值一致。?
?
支持自定义扩展的?Data Id?配置???Spring Cloud Alibaba?Nacos?Config?从?0.2.1?版本后 可支持自定义?Data Id?的配置。关于这部分详?细的设计可参考?这里。?一个完整的配置案例如下所示:?
??spring.application.name opensource-service-provider??
??spring.cloud.nacos.config.server-addr 127.0.0.1:8848?
??# config external configuration??
??# 1、Data Id?在默认的组?DEFAULT_GROUP,不支持配置的动态刷新??
??spring.cloud.nacos.config.extension-configs[0].data-id ext-config-common01.properties?
??# 2、Data Id?不在默认的组 不支持动态刷新??
??spring.cloud.nacos.config.extension-configs[1].data-id ext-config-common02.properties??
??spring.cloud.nacos.config.extension-configs[1].group GLOBALE_GROUP?
??# 3、Data Id?既不在默认的组 也支持动态刷新??
??spring.cloud.nacos.config.extension-configs[2].data-id ext-config-common03.properties??
??spring.cloud.nacos.config.extension-configs[2].group REFRESH_GROUP??
??spring.cloud.nacos.config.extension-configs[2].refresh true?
?
配置的优先级???Spring Cloud Alibaba?Nacos?Config?目前提供了三种配置能力?从?Nacos?拉取相关的配置。??
?A:?通过?spring.cloud.nacos.config.shared-configs[n].data-id?支持多个共享?Data Id?的配置??
?B:?通过?spring.cloud.nacos.config.extensionconfigs[n].data-id?的方式支持多个扩展?Data Id?的配置??
?C:?通过内部相关规则(应用名、应用名 Profile )自动生成相关的?Data Id?配置??
?当三种方式共同使用时 他们的一个优先级关系是:A B C?
本文转自网络,原文链接:https://developer.aliyun.com/article/785978