基础配置步骤
- 引入依赖:在
pom.xml
中添加Resilience4J相关依赖,例如:
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-spring-boot2</artifactId>
<version>版本号</version>
</dependency>
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-circuitbreaker</artifactId>
<version>版本号</version>
</dependency>
- 配置断路器:在
application.yml
中进行配置,如:
resilience4j.circuitbreaker:
instances:
example:
slidingWindowSize: 10
permittedNumberOfCallsInHalfOpenState: 3
failureRateThreshold: 50
waitDurationInOpenState: 10s
- 使用注解:在需要添加断路器的方法上使用
@CircuitBreaker(name = "example", fallbackMethod = "fallbackMethod")
注解,其中name
对应application.yml
中配置的实例名,fallbackMethod
指定降级方法。
常见应用场景
- 远程服务调用:当调用第三方API时,由于网络波动、服务端故障等原因可能导致调用失败。通过断路器,可以在一定次数失败后,快速熔断,避免反复调用造成的资源浪费,同时执行降级逻辑,如返回本地缓存数据或友好的提示信息。例如,电商系统调用物流查询接口时,如果物流服务出现故障,断路器可防止大量无效调用,给用户返回“物流信息查询暂时不可用,请稍后重试”的提示。
- 微服务内部调用:在微服务架构中,服务之间相互调用频繁。如果某个微服务出现性能问题或故障,可能会影响到依赖它的其他微服务。断路器可保护依赖的微服务,在被调用微服务故障时,快速熔断并执行降级逻辑。比如,订单服务调用库存服务进行扣减库存操作,若库存服务因某种原因不可用,断路器可让订单服务执行本地补偿逻辑,如记录待处理订单,而不是一直等待库存服务响应。