分布式配置中心Spring Cloud Config使用详解12(请求配置失败快速响应与重试)
作者:hangge | 2020-08-24 08:10
十二、客户端请求配置失败快速响应与重试
1,失败快速响应
(1)Spring Cloud Config 的客户端会预先加载很多其他信息,然后再开始连接 Config Server 进行属性的注入。当我们构建的应用较为复杂的时候,可能在连接 Config Server 之前花费较长的启动时间,而在一些特殊场景下,我们又希望可以快速知道当前应用是否能顺利地从 Config Server 获取到配置信息,这对在初期构建调试环境时,可以减少很多等待启动的时间。
(2)要实现客户端优先判断 Config Server 获取是否正常,并快速响应失败内容,只需在客户端的 bootstrap. properties 中配置如下参数即可:
假设我们不启动服务端 Config-Server,直接启动客户端应用:
- 如果未配置下面这个参数,在配置加载报错之前,客户端应用便已经加载了很多内容,比如 Controller 的请求等。
- 如果配置了如下参数,启动客户端后前置的加载内容会少很多,很快就报错。这样有效避免了当 Config-server 配置有误时,不需要多等待前置的一些加载时间,实现了快速返回失败信息。
spring.cloud.config.fail-fast=true
2,自动重试功能
(1)有时可能因为网络波动等其他间歇性原因导致连接失败,Config 客户端还提供了重试功能,避免一些间歇性问题引起的失败导致客户端应用服务启动的情况。要实现这个功能,首先确保配置了失败快速响应:spring.cloud.config.fail-fast=true
(2)然后在客户端的 pom.xml 中增加 spring-retry 和 spring-boot-starter-aop 依赖:
<dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>
(3)我们启动客户端应用,在控制台中可以看到如下内容。可以发现当客户端连接 Config Server 失败之后,会继续尝试,直到第 6 次失败后,才会返回错误信息。
(4)若对默认的最大重试次数和重试间隔等设置不满意,还可以通过下面的参数进行调整。
- 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 次
全部评论(0)