spring-cloud(6)【config】

1.简述

springcloud中的配置中心为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持, 它分为服务端与客户端两个部分。 其中服务端也称为分布式配置中心, 它是 一 个独立的微服务应用, 用来连接配置仓库并为客户端提供获取配置信息、 加密/解密信息等访问接口;而客户端则是微服务架构中的各个微服务应用或基础设施, 它们通过指定的配置中心来管理应用资源与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息。

配置中心的服务端支持git,svn,本地文件的方式读取,通过此来解决客户端配置的统一管理和及时更新。

2. 简单使用

1. 服务端

  • 添加依赖
<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-config-server</artifactId>
		</dependency>

  • 加入注解

@EnableConfigServer

  • 添加配置
spring.application.name=config-server
server.port=8886
#注册到eureka上,注册之后可以实现配置服务的高可用,也可以不注册
eureka.client.serviceUrl.defaultZone=http://localhost:8881/eureka/     

spring.cloud.config.server.git.uri = https://gitee.com/xxx/config-server/
spring.cloud.config.server.git.searchPaths = 文件夹路径
spring.cloud.config.server.git.username = xxx
spring.cloud.config.server.git.password=xxx
  • git配置

在git上新建文件user-service-dev.properties,设置内容如,from=1.0

启动项目,可以在浏览器访问,http://localhost:8886/user-service/dev

配置服务会将git的内容在本地暂存,当网络故障时,面对客户端的请求,依然可以返回配置信息。

2. 客户端

  • 添加依赖
<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-config</artifactId>
		</dependency>

注意不要将服务端依赖和客户端依赖搞混,之前学习的时候,客户端把两个依赖都连了,结果死活获取不到配置

扫描二维码关注公众号,回复: 1812585 查看本文章

  • 创建配置

在客户端创建配置文件bootstrap.properties,并添加内

server.port=8882
spring.application.name=user-service
eureka.client.serviceUrl.defaultZone=http://localhost:8881/eureka/

spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=config-server
spring.cloud.config.profile=default

spring.application.name对应的就是在git配置的文件的名字

spring.cloud.config.discovery.serviceId表示配置服务的服务名称,如果配置中心没有注册到eureka上,可以使用

spring.cloud.config.uri=http://localhost:8886/来配置

启动客户端,就客户端就自动获取相应配置。比如数据库,缓存等配置,很方便

3. 其他方式,svn,本地文件以后在写

3. 失败快速响应与重试

  • 如果希望希望可以快速知道当前应用是否能顺利地从ConfigSe rve r获取到配置信息, 这对在初期构建调试环境时, 可以减少很多等待启动的时间。 要实现客户端优先判断ConfigSe rve r获取是否正常, 并快速响应失败内容, 只需在bootstrap.proper巨es中配置参数spring.cloud.con巨g.failFast= true即可
  • 但是, 若只是因为网络波动等其他间歇性原因导致的问题, 直接启动失败似乎代价有些高。 所以, Config 客户端还提供了自动重试的功能, 在开启重试功能前, 先确保已经配置了 spring.cloud.config.failFast=true,  再进行下面的操作。

添加依赖:

<dependency>
<groupid>org.springframework.retry</groupid>
<artifactid>spring-retry</artifactid>
</dependency>

不需要再做其他任何配置, 启动客户端应用, 在控制台中可以看到如下内容。 客户端在连接 Config Se1-ver 失败之后, 会继续尝试, 直到第 6 次失败后, 才返回错误信息。 通过这样的重试机制, 可以避免 一 些间歇性问题引起的失败导致客户端应用无法启动的情况。

若对默认的最大重试次数和重试间隔等设置不满意,还可以通过下面的参数进行调整。
    • spring.cloud.config.retry.multiplier: 初始重试间隔时间(单位为毫秒),默认为 1000 毫秒。
    • spring.cloud.config.retry.initial-interval: 下 一 间隔的乘数,默认为 1.1, 所以当最初间隔是 1000 毫秒时, 下 一 次失败后的间隔为 1100 毫秒。
    • spring.cloud.config.retry.max-interval: 最大间隔时间,默认为 2000毫秒。
    • spring.cloud.config.retry.max-attempts: 最大重试次数,默认为 6 次。

4. 动态刷新配置

  • 添加配置
<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
  • 访问http://localhost:8882/refresh

就可以在更改配置之后,自动刷新

猜你喜欢

转载自blog.csdn.net/wangzhanzheng/article/details/80451559