微服务——限流、熔断、降级

前言

微服务架构中,由于涉及到的服务较多,并且服务之间需要通信,这就意味着增加了服务的复杂度,复杂度的增加也就带来了服务的不可靠性:比如网络超时、服务宕机、服务超时等。

如果一条服务调用链中的某个服务出现了问题,就会导致上游调用服务线程积压,最终导致上游服务卡死无响应(这个过程称为服务雪崩)。

防止服务雪崩的解决思路:一是提前预防,限制流量防止流量过大导致服务被压垮,二是过程干预,比如真正遇到某个服务异常(不可用或超时)如何处理,比如熔断降级。

限流

任何架构都有有限的处理能力,通过提前干预,基于QPS 和并发线程数来限制流量,保证服务不被压垮。限流的方式有:

直接限流,多余的流量直接拒绝!

排队限流,让多余的流量排队等待处理,也称为流量整形。

比如 nginx 里有对应的 limit_req 、limit_rate配置来限制流量。

熔断

为了解决服务雪崩问题,提出了熔断这一概念,跟股市熔断、以及疫情期间的航班熔断类似。

服务熔断是根据一定的熔断策略(被调用服务的异常和超时率等)来决定是否断开该服务的调用,熔断后直接不返回或返回个空(快速失败)。

熔断后会尝试性地放行部分请求,来试探服务调用是不是能恢复(关闭熔断)。

熔断通常在调用端执行。

(异常)降级

没有触发熔断前,针对业务异常,可以做降级处理:比如记录异常,下次定时任务去补偿数据,返回一个默认值。这种处理称为降级操作。

注意,服务没有熔断,仍然被调用了,只是在执行的过程抛了异常,降级操作相当于捕获了异常然后返回一个默认值而已。

比如 sentinel 和 feign 都有对应的 fallback 属性来指定降级处理的类或者方法。


如果觉得还不错的话,关注、分享、在看(关注不失联~), 原创不易,且看且珍惜~

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【非典型Coder】

赏个鸡腿吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值