1.1 分布式配置中心作用
在网络世界中配置文件是非常重要的,因为通过配置文件可以对程序进行修改或者管理,而网络世界主要是程序所构成的,所以配置文件对于我们的重要性不言而喻。 分布式配置中心可以做到统一管理,例如微服务中相同的配置不用冗余配置。 分布式配置中心可以做到对配置进行实时更新,当更新了配置后不用重启应用。
1.2 Spring Cloud分布式配置应用方式
两种方式使用分布式配置: 1. 直接使用远程仓库 在配置仓库中的文件中配置配置文件,然后在SpringBoot应用中bootstrap.yaml(注意不是application.yml文件)配置以下信息:
spring.cloud.config.name: equipment-data-sync
spring.cloud.config.profile:local
spring.cloud.config.label:master
spring.cloud.config.uri:http://127.0.0.1:80
配置说明: spring.cloud.config.name:获取配置文件的名称 spring.cloud.config.profile: 获取配置的策略 spring.cloud.config.label:获取配置文件的分支,默认是master。 spring.cloud.config.uri:指定的配置中心地址
作用: (1). 通过这样的方式就可以在SpringBoot应用不用通过项目资源下的application.yaml去加载配置,而是通过统一的配置中心拉取配置。 (2). SpringBoot应用在启动的时候,默认会从工程的classpath下加载配置信息并启动应用,只有配置了srping.cloud.config.uri的时候,客户端才会尝试连接Config Server拉取配置信息并初始化Spring环境配置。我们必须将uri这个属性参数配置到bootstrap.yml(或.properties)中,这个配置文件的优先级大于application.yml和其它文件,这样才能保证能正确加载远程配置。启动的时候客户端会去连接uri属性的值。
2. 使用Spring Cloud Config常用的模式 步骤如下: (1). 创建服务与注册中心服务 (2). 创建Config-Server服务,此服务注册到注册中心,在程序主类额外增加**@EnableConfigServer**注解,该注解表示启用config配置中心功能。此服务是配置中心,指定名为springcloud-config-server,用来管理配置。 配置中心需要有application.yaml,如下配置:
spring.application.name=springcloud-config-server
server.port=9005
eureka.client.serviceUrl.defaultZone=http://localhost:8005/eureka/
spring.cloud.config.server.git.uri = https://github.com/xuwujing/springcloud-study/
spring.cloud.config.server.git.search-paths = /springcloud-config/config-repo
spring.cloud.config.server.git.username =
spring.cloud.config.server.git.password =
spring.application.name: 这个是指定服务名称。 server.port:服务指定的端口。 eureka.client.serviceUrl.defaultZone: 这个是设置与Eureka Server交互的地址,客户端的查询服务和注册服务都需要依赖这个地址。 spring.cloud.config.server.git.uri: 配置的Git仓库的地址。 spring.cloud.config.server.git.search-paths: git仓库地址下的相对地址 多个用逗号","分割。 spring.cloud.config.server.git.username:git仓库的账号。 spring.cloud.config.server.git.password:git仓库的密码
注: 如果想使用本地方式读取配置信息,那么只需将spring.cloud.config.server.git的配置改成spring.profiles.active=native,然后在resources路径下新增一个文件即可。此次配置就是读取当前应用下的文件,在resources路径下新增一个客户端要读取的配置文件configclient.yaml。
(3). 创建Config-client服务,此服务也注册到注册中心,新增bootstrap.yaml文件 配置如下:
spring.cloud.config.name=configclient
spring.cloud.config.profile=test
spring.cloud.config.label=master
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=springcloud-config-server
eureka.client.serviceUrl.defaultZone=http://localhost:8005/eureka/
这样从configclient中的服务就可以不用添加application文件,使用@Value可以从配置服务端读取相应的配置(configclient.yaml),通过分支推送代码的方式实现动态刷新配置。
|