作者简介:曾任职于阿里巴巴,每日优鲜等互联网公司,任技术总监,15年电商互联网经历。
关于熔断,网上的文章很多,但是真正讲明白的文章寥寥无几。很多作者互相抄袭,缺乏自己的认知和理解。
分享熔断之前,咱们先说说大家更熟悉的Timeout。Timeout和熔断有关系吗?别急,往下看就清楚啦!
我们在跨系统调用、跨服务调用以及调用第三方接口时,一般会设置超时时间。有两个作用:其一,出于用户体验考虑,啥结果也不返回,一直让人等下去,确实受不了。其二,出于系统性能问题的考虑,并发不高时timeout可以避免线程阻塞带来的性能问题,但是并发高时timeout就不能解决问题啦。
现在轮到熔断大显身手了。
熔断是什么?
一种降级手段。当服务不可用时,用来避免连锁故障,雪崩效应。发生在服务调用的时候,在调用方做熔断处理。
熔断的意义是什么?
我们使用熔断前要先弄清楚熔断的真正意义,避免用错给系统带来麻烦。实际上,用一句话就可以描述熔断的意义:上游服务快速失败(Fail Fast),并保护下游服务。
详细解释一下,假设上游服务是A,下游服务是B,A调用B,B发生故障,开启熔断:
对于上游服务A:请求到A后直接快速返回(返回值可以是默认值,或者通过一种后背(Fallback)方案获取的值),快速失败,不再发送到B。 避免因为B故障,导致请求线程持续等待,进而导致线程池线程和CPU资源耗尽,进而导致A无响应甚至整条调用链故障。
对于下游服务B:熔断后,请求被A拦截,不再发送到B,B压力得到缓解,避免了仍旧存活的B被压垮,B得到了保护。

本文深入解析熔断机制,解释其作为降级手段如何避免连锁故障和雪崩效应。介绍熔断的意义在于上游服务快速失败,保护下游服务。详细阐述熔断状态流转过程,并指出在并发高时,熔断是解决服务调用问题的有效策略。同时,列举了电商行业中的熔断应用实例。推荐工具如Hystrix和Resilience4j。
最低0.47元/天 解锁文章
1757

被折叠的 条评论
为什么被折叠?



