欢迎大佬们来吐槽呀。 链接:github.com/useraddZYB/furnace 也可以上GitHub搜:useraddZYB/furnace
框架取名“熔炉”,表示异常率过大会自动熔断的意思。jar包引入、代码集成和效果示范,也都贴在图片里了。
重点来了-----------------
这个熔断组件是2017年在BAT之一的公司写的,以下是这个组件的“发明”由来:
我当时在部门里除了负责单独一块业务外,还负责了一个小的评论系统。但是这个评论系统又是强依赖公司另外一个大部门的系统,相当于我这边只是一个代理。
有一天我们的产品首页直接打不开了,因为这个首页前端默认就要请求我的评论系统,加载所有的用户评论。而我这个系统依赖的别的部门的真正的评论系统,他们的系统宕机了,修复时间漫长,我们的首页就得等着。
我沉默不语,思考了一会。心想业务上咱们的产品首页,在特殊情况下不展示评论,几乎没有影响,也不会导致首页直接打不开一直加载。
需求明确了,技术方案就简单了,我需要一个自动“阻断”的功能,当强依赖的系统异常率达到阈值的时候,就直接返回,等那系统恢复后,我们自己也还能正常跟着恢复发起请求。
然后就一个人,开发了一个周末加一个周一3天时间,初步成型,集成到我们的评论系统里测试完善了2天。5天时间从设计到开发到上线,上线后效果达到运行稳定。
过了一年多后,我的朋友圈里有一位去了漂亮团的前同事转发了一篇技术文章,讲的是netfix公司开源的hystrix熔断降级组件。
我看了一下:哎呀,会心一笑、码农所见略同。
(二者核心设计上唯一的区别是:hystrix尝试恢复的时候只发一个请求去看是否成功,而我的是全部放开。理论上折中一下,发20%的流量出去尝试是最合适的。)