resilience4j(五):核心模块CircuitBreaker源码之CircuitBreakerState

本文详细介绍了Resilience4j中的CircuitBreakerState,包括ClosedState、OpenState、HalfOpenState、DisabledState和ForcedOpenState等熔断状态的实现和功能。每个状态都有不同的行为,如ClosedState允许所有请求,OpenState阻止请求,而HalfOpenState则尝试恢复服务。CircuitBreakerMetrics在各个状态中起到关键作用,用于度量熔断器的表现。
摘要由CSDN通过智能技术生成

CircuitBreakerState

熔断状态抽象类,内置熔断状态有限机CircuitBreakerStateMachine 来进行熔断状态转换。

	//通过stateMachine进行熔断状态转换
    CircuitBreakerStateMachine stateMachine;
	//判断是否允许请求被通过
    abstract boolean isCallPermitted();
	//请求出现异常处理策略,更新熔断指标,并判断是否要转换熔断状态
    abstract void onError(Throwable throwable);
   //请求成功处理策略,更新熔断指标,并判断是否要转换熔断状态
    abstract void onSuccess();
	//返回当前熔断状态
    abstract CircuitBreaker.State getState();
	//返回当前熔断度量指标
    abstract CircuitBreakerMetrics getMetrics();
 	//根据熔断状态枚举配置或熔断事件枚举配置判断是否需要发布熔断事件
    boolean shouldPublishEvents(CircuitBreakerEvent event){
        return event.getEventType().forcePublish || getState().allowPublish;
    }

CircuitBreakerState子类有如下几种,每个子类都有不同的接口实现:
在这里插入图片描述

ClosedState

熔断关闭状态,其有以下两个成员变量

  • CircuitBreakerMetrics circuitBreakerMetrics;(熔断度量指标)
  • float failureRateThreshold;(失败率阀值,超过熔断器会转换到开启状态)

以下源码中stateMachine.transitionToXXXXState();前面章节已讲解,这里不在叙述。
isCallPermitted

熔断器当处于关闭状态时,允许所有请求通过

    boolean isCallPermitted() {
        return true;
    }

onError

    void onError(Throwable throwable) {
        // CircuitBreakerMetrics is thread-safe
        //失败次数+1,并返回当前失败率,判断是否达到阀值
        checkFailureRate(circuitBreakerMetrics.onError());
    }
    private void checkFailureRate(float currentFailureRate) {
        if (currentFailureRate >= failureRateThr
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值