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


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


推荐阅读