Spring Boot和Spring Cloud版本对应关系
文章目录
查询办法
打开SpringCloud官网,在页面中找到Release train Spring Boot compatibility
这部分:
注意
从2020.0.x版本开始,Spring Cloud官方已经将Hystrix移除,需要使用 Resilience4j 替代 Hystrix 进行熔断
替换方法
1.添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-spring-boot2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2.配置 application.yml
resilience4j:
circuitbreaker:
instances:
myFeignClient:
sliding-window-size: 10 # 统计窗口大小
minimum-number-of-calls: 5 # 最小请求数,达到后才计算失败率
failure-rate-threshold: 50 # 失败率达到 50% 触发熔断
wait-duration-in-open-state: 5000ms # 熔断器打开后等待时间
permitted-number-of-calls-in-half-open-state: 3 # 半开状态允许 3 次请求
3.修改FeignClient 接口
import io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(name = "my-service", url = "http://localhost:8081")
public interface MyFeignClient {
@GetMapping("/test")
@CircuitBreaker(name = "myFeignClient", fallbackMethod = "fallbackMethod")
String callRemoteService(@RequestParam String param);
// 熔断后执行的方法
default String fallbackMethod(String param, Throwable t) {
return "远程服务不可用:" + param;
}
}
4.配置说明
- 正常情况下,invoke 方法通过 Feign 调用远程接口 /test。
- 如果远程服务返回错误或超时,Resilience4j 会熔断并执行 fallbackMethod 方法返回 "远程服务不可用"。
- 熔断器的 失败率达到 50% 后,会进入 打开(Open)状态,自动拒绝请求,并等待 5 秒后 进入半开状态。
- 半开(Half-Open)状态 下允许 3 个请求,如果它们成功,熔断器恢复 关闭(Closed)状态。
文章作者 pengxiaochao
上次更新 2025-02-08
许可协议 不允许任何形式转载。