钨丝woosmart 用100行代码手写一个Hystrix( 二 )


基于统计信息做熔断 , 错误请求占比超过阈值做熔断统计周期在分钟级别内(1分钟内的统计达到阈值)如果分钟内 , 总请求次数未达到minTimes次数不做熔断(请求频次太低 , 统计信息无意义)即便是到达熔断条件 , 仍然牺牲1%(可修改)的请求做探活isFailed.get()&&System.currentTimeMillis()%100==0优缺点
Hystrix提供了服务熔断、线程隔离等一系列服务保护功能 。 我们手写的熔断器只能提供基于调用方的手工熔断方法 。
Hystrix提供了线程池、信号量两种方式 。 手写熔断器功能相对单一只基于统计信息 , 且以分钟为维度的颗粒度较为粗糙 。
Hystrix命令式编程和注册回调的方式 , 代码复杂度高 。 手写熔断器在侵入代码过程中 , 偏面向过程 , 理解成本低 。
去掉注释和无效空行后实际有效代码不足100行 , 我们用了不到一百行代码实现了熔断功能 。 虽然应用到大型服务场景下会有诸多缺陷 , 也希望至少能为大家提供了一个思路 。
作者:小眼睛聊技术链接:https://juejin.im/post/5ef900dcf265da22b13680f1