SpringCloud—解决雪崩效应之熔断

SpringCloud—解决雪崩效应之熔断

当一定时间内,异常请求比例(请求超时、网络故障、服务异常等)达到阀值时,启动熔断器,熔断器一旦启动,则会停止调用具体服务逻辑,通过fallback快速返回托底数据,保证服务链的完整。
熔断有自动恢复机制,如:当熔断器启动后,每隔5秒,尝试将新的请求发送给Application Service,如果服务可正常执行并返回结果,则关闭熔断器,服务恢复。如果仍旧调用失败,则继续返回托底数据,熔断器持续开启状态。
降级是出错了返回托底数据,而熔断是出错后如果开启了熔断将会一定时间不在访问application service
在这里插入图片描述

1.属性

熔断的实现是在调用远程服务的方法上增加@HystrixCommand注解。当注解配置满足则开启或关闭熔断器。
@HystrixProperty的name属性取值可以使用HystrixPropertiesManager常量,也可以直接使用字符串进行操作。

注解属性描述:

CIRCUIT_BREAKER_ENABLED
"circuitBreaker.enabled";
是否开启熔断策略。默认值为true。
CIRCUIT_BREAKER_REQUEST_VOLUME_THRESHOLD
"circuitBreaker.requestVolumeThreshold";
单位时间内(默认10s内),请求超时数超出则触发熔断策略。默认值为20次请求数。
EXECUTION_ISOLATION_THREAD_TIMEOUT_IN_MILLISECONDS
execution.isolation.thread.timeoutInMilliseconds
设置单位时间,判断circuitBreaker.requestVolumeThreshold的时间单位,默认10秒。单位毫秒。
CIRCUIT_BREAKER_SLEEP_WINDOW_IN_MILLISECONDS
"circuitBreaker.sleepWindowInMilliseconds";
当熔断策略开启后,延迟多久尝试再次请求远程服务。默认为5秒。单位毫秒。这5秒直接执行fallback方法,不在请求远程application service。
CIRCUIT_BREAKER_ERROR_THRESHOLD_PERCENTAGE
"circuitBreaker.errorThresholdPercentage";
单位时间内,出现错误的请求百分比达到限制,则触发熔断策略。默认为50%。
CIRCUIT_BREAKER_FORCE_OPEN
"circuitBreaker.forceOpen";
是否强制开启熔断策略。即所有请求都返回fallback托底数据。默认为false。
CIRCUIT_BREAKER_FORCE_CLOSED
"circuitBreaker.forceClosed";
是否强制关闭熔断策略。即所有请求一定调用远程服务。默认为false。

2.代码示例

在原有降级代码上修改@HystrixCommand如下。
关闭ApplicationSeviceDemo项目,访问DemoFallback控制器,刷新5次后会发现页面加载快了,这时就开启熔断了。此时打开ApplicationServiceDemo,发现依然返回托底数据。到达30秒后再次访问才能正常访问ApplicationServiceDemo中内容。
注意:单位时间时间内容请求数必须达到5个(无论成功还是失败)才能满足条件。

@HystrixCommand(fallbackMethod = "myFallback",commandProperties = {
   
        
// 条件一: 请求数量到达3个
        @HystrixProperty(name= "circuitBreaker.requestVolumeThreshold",value="3"),
        // 判断时间,,10秒作为一个判断单位
        @HystrixProperty(name="execution.isolation.thread.timeoutInMilliseconds",value="10000"),
        // 条件二: 失败了到达50%
        @HystrixProperty(name="circuitBreaker.errorThresholdPercentage",value="50"),
        // 结果: 开启熔断后,30秒不在请求远程服务
        @HystrixProperty(name="circuitBreaker.sleepWindowInMilliseconds",value = "30000")
})
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/2313.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 截取示波器网络图片[通俗易懂]

    截取示波器网络图片[通俗易懂]■问题由来手边有一台相对比较古老的Tektronix的示波器TDS3054D示波器,四通道的。它可以通过联网获得波形的图片。对于记录观察到的波形相对比较方便。▲示波器及其联网获得屏幕图片在截取示波器波形窗口的过程中,由于上面出现红色的字体(HOME:TDS3054BAA(192.168.0.101))的影响,经常使得截取图片出现不完整,因此希望通过软件(PYTHON程序)自动完成精细截取的过程。▲截取示波器波形窗口TDS3054B的显示模式包括两种:普通显示模式:示波器的

    2022年10月12日
    3
  • HashMap数据结构图,实现原理的理解[通俗易懂]

    HashMap数据结构图,实现原理的理解[通俗易懂]

    2022年5月12日
    34
  • Java程序设计(高级及专题)- JDBC

    Java程序设计(高级及专题)- JDBCJava程序设计(高级及专题)- JDBC

    2022年4月22日
    41
  • 1 RRC 常用名词解释「建议收藏」

    1 RRC 常用名词解释「建议收藏」常用名词解释1.RRC无线资源控制(RadioResourceControl,RRC),又称为无线资源管理(RRM)或者无线资源分配(RRA),是指通过一定的策略和手段进行无线资源管理、控制和调度,在满足服务质量的要求下,尽可能地充分利用有限的无线网络资源,确保到达规划的覆盖区域,尽可能地提高业务容量和资源利用率2.MCG、SCG、PCell,PSCell,SCell和sPCell这些是NSA双链接(DC,Dualconnectivity)下的概念MCG:MasterCellgr

    2022年9月25日
    4
  • 从PSF到PMF,再到PRF

    从PSF到PMF,再到PRFPMF的概念,我想大家都熟知了,但最近我经常看到,也感觉在PMF之前,还有个更早期的概念,可以用PSF来描述。简单对比就是:Problem-Solution-Fit:价值…

    2022年5月23日
    38
  • 四大桌面云显示协议解析

    四大桌面云显示协议解析

    2021年9月9日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号