一文读懂分布式熔断与服务降级

本文介绍了分布式系统中熔断机制如何防止服务雪崩,包括熔断器的工作状态和服务降级的概念,以及服务降级的不同分类如自动降级和人工降级。还讨论了熔断与服务降级的区别,并列举了常用的熔断降级工具如Hystrix、Resilience4j和Sentinel。
摘要由CSDN通过智能技术生成

什么是熔断

分布式系统都是由多个微服务构成,一个接口调用过程会存在很长的服务调用链。一旦调用链上某服务挂掉或者响应时间很长,会导致整个调用链响应缓慢,严重点的话,就可能导致系统全面崩溃,这就是服务雪崩。

为了防止服务雪崩,在被调用的服务出现故障时,调用方主动停止调用,这种行为成为服务熔断。

熔断器工作状态

熔断器一般分为以下3个工作状态:

1.关闭状态(closed)

熔断器正常情况下处于关闭状态

2.开启状态(open)

熔断器包含计数器功能,每次调用失败,计数器就会累积加1,超过一定次数,熔断器就会处于开启状态。开启状态下,任何请求都会直接被拒绝并抛出异常。

3.半开启状态(half open)

熔断器开启后,内部会启用一个计时器,计时器倒计时完毕,就会切换到半开启状态。该状态下,会允许部分请求。如果请求全部正常,状态变为Closed。如果有任一请求失败异常,重新变为开启状态。

什么是服务降级

服务降级是在高并发情况下,应对服务器压力剧增的情况,对某些边缘服务与页面进行停用或者屏蔽,释放计算机资源用来确保核心服务的平稳运行。

举个栗子,公司总共四台服务器,两台用来进行下单业务,另外两台用来进行服务评价、商品推荐。双11活动来了,公司的商品卖爆了。为了确保下单业务的正常,把服务评级与商品推荐功能停了。四台服务器全部用来供应订单业务,这就叫做服务降级。

服务降级分类

自动开关降级

响应时间超时降级请求响应时间过长引起自动降级
失败次数大于设定阈值降级设定一个阈值,失败次数大于阈值自动降级
故障降级降级发生网络故障或者服务器彻底崩了,服务自动降级,返回默认页面,缓存的数据等。
限流降级降级商品秒杀功能设定流量阈值,到达限流阈值后展示排队页面,错误页面等。

人工开关降级

在进行双十一这些商品促销活动前,预估流量非常大,开发人员手动对某个功能进行降级。人工开关降级不一定是人在操作,可能是设置了定时任务,到点后自动触发服务降级。

大型分布式系统下的服务降级步骤

1.产品经理与开发梳理核心业务(不能降级)与非核心业务

2.指定降级策略,服务降级的先后顺序、流量的阈值与熔断的阈值等。

熔断与服务降级的区别

熔断涉及到因为服务不可用所引起的故障。

服务降级是因为系统资源有限情况下,从功能优先级考虑,采用延迟执行,异步执行或者默认值返回的策略。

常用的熔断降级工具有哪些

市面上常见的熔断降级工具有Hystrixresilience4jSentinel

1.Hystrix

目前已停止开发新功能,处于维护状态。最后一个版本是2018年发布的

2.Resilience4j

Hystrix停止开发后,Netflix官方推荐使用的熔断降级工具。

3.Sentinel

阿里自研的开源熔断降级工具,sentinel的官方文档有它与Hystrix的对比图

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值