分布式服务熔断降级&微服务熔断降级

本文介绍了服务熔断降级的概念,包括服务熔断和服务降级的含义。重点讨论了Dubbo、Hystrix和Sentinel三种服务熔断降级方案,详细讲解了它们的工作原理、隔离策略和适用场景,并给出了方案选择的建议。
摘要由CSDN通过智能技术生成

文章内容输出来源:拉勾教育Java高薪训练营

1.什么是服务熔断降级

服务熔断:当下游的服务因为某种原因突然变得不可用或响应过慢,上游服务为了保证自己整体服务的可用性,不再继续调用目标服务,直接返回,快速释放资源。如果目标服务情况好转则恢复调用。

服务降级:当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务有策略的降低服务级别,以释放服务器资源,保证核心任务的正常运行。

一般服务的熔断和降级在系统中都是结合着使用的。

2.服务熔断降级方案

(1)dubbo的容错策略和服务动态降级
(2)Hystrix
(3)Sentinel


(1)dubbo的容错策略和服务动态降级

Dubbo的容错: Dubbo的消费者在提供者数据的时候,它timeout=0 代表永不超时,这样就很容易阻塞过多,为了防止这种服务雪崩的情况,Dubbo提供了一些容错处理策略。
Dubbo 主要提供了这样几种容错方式:
Failover,失败自动切换,失败时会重试其它服务器,可以设置重试次数。
Failfast, 快速失败,请求失败后快速返回异常结果,不进行重试。
Failsafe,失败安全,出现异常,直接忽略,会对请求做负载均衡。
Failback, 失败自动恢, 请求失败后,会自动记录请求到失败队列中,通过定时线程扫描该队列,并定时重试。
Forking, 并行调用多个服务提供者,其中有一个返回,则立即返回结果。
Broadcast,广播调用所有可以连接的服务,任意一个服务返回错误,就任务调用失败。
Mock,响应失败时返回伪造的响应结果。
Available,通过遍历的方式查找所有服务列表,找到第一个可以返回结果的节点,并且返回结果。
Mergable,将多个节点请求合并进行返回。

策略名称 优点 缺点 主要应用场景
Failover 对调用者屏蔽调用失败的信息 增加RT,额外资源开销,资源浪费 对调用RT不敏感的场景
Failfast 业务快速感知失败状态进行自主决策 产生较多报错的信息 调用非幂等性接口,需要快速感知失败的场景
Failsafe 即使失败了也不会影响核心流程 对于失败的信息不敏感,需要额外的监控 旁路系统,失败不影响核心流程正确性的场景
Failback 失败自动异步重试 重试任务可能堆积 对于实时性要求不高,且不需要返回值的一些异步操作
Forking 并行发起多个调用,降低失败概率 消耗额外的机器资源,需要确保操作幂等性 资源充足,且对于失败的容忍度较低,实时性要求高的场景
Broadcast 支持对所有的服务提供者进行操作 资源消耗很大 通知所有提供者更新缓存或日志等本地资源信息

Dubbo服务动态降级: 在dubbo中提供了多种服务降级方式,其本质并不是对 provider 进行操作,而是告诉consumer,调用服务时要做哪些动作,具体方式如下。

(1)在Dubbo管理控制台配置服务降级(即屏蔽和容错)
mock=force:return+null 表示消费方对该服务的方法调用都直接返回 null 值,不发起远程调用。用来屏蔽不重要服务不可用时对调用方的影响。
mock=fail:return+null 表示消费方对该服务的方法调用在失败后,再返回 null 值,不抛异常。用来容忍不重要服务不稳定时对调用方的影响。

Dubbo管理控制台配置服务降级

(2)指定返回简单值或者null

<dubbo:reference id="xxService"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值