SpringCloud 配置中心
随着线上项目变的日益庞大,每个项目都散落着各种配置文件,如果采用分布式的开发模式,需要的配置文件随着服务增加而不断增多。某一个基础服务信息变更,都会引起一系列的更新和重启,运维苦不堪言也容易出错。配置中心便能很好的解决此类问题。
Spring Cloud Config项目是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用。
修改配置文件:$PWD/spring-cloud-config-server/src/main/resources/application.yml
此配置文件用来指定服务端从何处获取项目配置文件信息,根据实际情况修改。
进入目录:cd $PWD/spring-cloud-config-server
执行脚本: sh startup-code.sh
使用浏览器访问 http://${ip}:8011/config/dev
成功会返回如下信息:
说明:请求地址http://${ip}:8011/config/dev
中的 config/dev
对应的是配置文件的名称-节点。
例如config/pro
请求获取的是config-pro.properties文件属性
修改配置文件:$PWD/spring-cloud-config-server/src/main/resources/bootstrap.properties
进入目录:cd $PWD/spring-cloud-config-client
执行脚本: sh startup-code.sh
使用浏览器访问 http://${ip}:8012/hello
成功会返回如下信息:
说明:
红色标记处注解表示此类中被spring管理(字段上有@value)的字段支持动态刷新
修改Git上配置文件后需要手动调用刷新接口 http://${ip}:8012/refresh
才能生效
红色标记处如果为true,刷新接口将被拦截。
修改Git上配置信息后使用浏览器访问http://${ip}:8012/hello
成功会返回修改后信息:
Tips:可以将动态刷新接口配置到Git项目的WebHooks中,当有配置文件提交时自动触发接口调用
1).将POM文件依赖拷贝到业务系统POM文件中
2).将目录$PWD/spring-cloud-config-server/src/main/resources下配置文件拷贝到业务系统中
3).在需要从配置中心注入属性的字段上添加@Value("${hello}")
(hello为配置文件中字段名)
4).如果需要支持动态刷新,在需要注入属性的类上添加注解@RefreshScope
目前客户端都是直接调用配置中心的server端来获取配置文件信息。这样就存在一个问题,客户端和服务端的耦合性太高,如果server端要做集群,客户端只能通过原始的方式来路由,server端改变IP地址,客户端也需要修改配置,不符合springcloud服务治理的理念。
#####Server端改造
1、添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
</dependencies>
2、修改配置文件:$PWD/spring-cloud-config-server/src/main/resources/application.yml
3、启动类 启动类添加@EnableDiscoveryClient注解
#####Client端改造
1、添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2、修改配置文件:$PWD/spring-cloud-config-server/src/main/resources/bootstrap.properties
主要是去掉了spring.cloud.config.uri直接指向server端地址的配置,增加了最后的三个配置:
spring.cloud.config.discovery.enabled :开启Config服务发现支持
spring.cloud.config.discovery.serviceId :指定server端的name,也就是server端spring.application.name的值
eureka.client.serviceUrl.defaultZone :指向配置中心的地址
这三个配置文件都需要放到bootstrap.properties的配置中
3、启动类
启动类添加@EnableDiscoveryClient注解
参考文档:$PWD/spring-cloud-config-bus/README.md
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。