关于熔断降级的理解

  • 前言

  1. 熔断不是为了保护下游系统,熔断也不是为了保护核心流程永远可用,熔断是为了让“A–>B”快速返回,从而避免 ”慢接口消耗过多的php fpm进程或tomcat http线程导致其他接口得不到执行的机会“,最终避免系统雪崩
  2. 不存在“无法熔断”的接口,熔断的前期就是B已经挂了,”不存在能不能作熔断“的问题。A–>B是网络调用,A的代码一定会处理TimeoutException。所以,至少可以使用“TimeoutException的返回值 来当做 熔断期间的返回值“
  • 正文

1:什么是熔断
A–>B时,B持续失败,于是A判断B出了故障,然后A决定不再调用B了,此时A熔断了。熔断期间,A或者抛出异常(例如:CircuitException),或者A返回某个默认值

注意:熔断发生在主调方

2:什么是降级
我们在系统内部预先埋好开关,在某个时刻打开开关隐藏某些功能,降级后系统提供有损服务。例如:为了保障核心交易链路,黑五期间我们通过预先埋好的开关隐藏退货按钮并显示友好提示;又或者,黑五期间,为了保障数据库性能,关闭掉B端系统的某些报表导出功能(B端和C端共有同一个数据库)。

注意:降级一般是早早埋好的开关。等时x机成熟了就把开关打开

3:什么是熔断降级
”熔断降级”等价于“熔断”。A–>B,A发生了熔断,熔断期间,A总是要返回点啥的,那A返回什么呢?A此时做出的决策就是“熔断降级”策略,A抛异常是一种“熔断降级”策略,A返回某个默认值也是一种“熔断降级”策略。即:

if(尚未熔断){…}

// 已经熔断。下面是所谓的”熔断降级“

else{ throw new CircuritException()或者return defaultValue;}

注意:”熔断降级”等价于“熔断”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值