为了账号安全,请及时绑定邮箱和手机立即绑定

什么是服务的熔断降级

标签:
JavaScript

很多同学知道我在美团点评负责稳定性保障平台的研发,平台中的功能之一就有服务的熔断降级,提起熔断降级,大家可能熟悉的是Netflix的开源组件Hystrix,但是我们并没有在它的基础上进行二次开发,而是重新撸了一个,可能有人说,重复造轮子不是浪费时间吗?那如果造出的轮子更好用、跑的更快呢,所以不要怕造轮子,只有不断的创新,才有不断的进步。

首先看看为什么需要熔断降级呢?

服务的稳定是公司可持续发展的重要基石,随着业务量的快速发展,一些平时正常运行的服务,会出现各种突发状况,而且在分布式系统中,每个服务本身又存在很多不可控的因素,比如线程池处理缓慢,导致请求超时,资源不足,导致请求被拒绝,又甚至直接服务不可用、宕机、数据库挂了、缓存挂了、消息系统挂了...

对于一些非核心服务,如果出现大量的异常,可以通过技术手段,对服务进行降级并提供有损服务,保证服务的柔性可用,避免引起雪崩效应。

https://img1.sycdn.imooc.com//5d2de7e70001109f07050571.jpg

如果ServiceA调用ServiceD一直失败,或者失败率很高,就可以采用“一种机制”确保后续请求不会调用ServiceD,而是执行降级逻辑。

这里的这个机制就是熔断降级,熔断降级的实现原理也很简单,看下面这个图:

https://img1.sycdn.imooc.com//5d2de7ea0001be4c07410602.jpg

1、实时监控接口的健康值,在达到熔断条件时,自动开启熔断
2、开启熔断之后,如何实现自动恢复?每隔一段时间,释放一个请求到服务端进行探测,如果后端服务已经恢复,则自动恢复

当然了,具体实现,这里就不细讲了。

这里说下,为什么没用使用Hystrix进行二次开发,主要是有下面几点考虑:
1、内置的参数配置无法动态修改
2、复杂的代码设计,扩展新功能难度大
3、业务接入负责,方式不够人性化
4、压测时性能,令人担忧

通过自研,可以自由把控任何细节,和内部框架无缝集成。



作者:占小狼
链接:https://www.jianshu.com/p/3463571febc2
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消