扫码关注公众号:芋道源码

发送: 百事可乐
获取永久解锁本站全部文章的链接

《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 http://www.iocoder.cn/Hystrix/build-debugging-environment/ 「芋道源码」欢迎转载,保留摘要,谢谢!

本文主要基于 Hystrix 1.5.X 版本


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

1. 依赖工具

  • Gradle
  • JDK
  • IntelliJ IDEA

推荐 Spring Cloud 书籍

2. 源码拉取

从官方仓库 https://github.com/Netflix/Hystrix.git Fork 出属于自己的仓库。为什么要 Fork ?既然开始阅读、调试源码,我们可能会写一些注释,有了自己的仓库,可以进行自由的提交。😈

使用 IntelliJ IDEAFork 出来的仓库拉取代码。在项目路径下,在命令行执行 ./gradlew 命令,Gradle 会下载依赖包,可能会花费一些时间,耐心等待下。其间可能会出现因为网络原因( 我相信你懂的 ),可能会出现失败的情况,淡定,重新执行上述命令直到成功。此刻,你就是一个 while(true) 的小强。

本文基于 master 分支。

3. 运行示例

hystrix-examples 子项目下,提供了大量的示例,如下图:

  • basic 包 :针对 Hystrix 每个特性提供小的单元测试示例。你可以从 CommandHelloWorld 开始尝试。
  • demo 包 :结合实际场景的实战小例子。运行入口为 HystrixCommandDemo 或者 HystrixCommandAsyncDemo 。恩,聪慧如你,从名字能看出它们的区别点。

可能有部分同学对 Hystrix 的特性了解的不是很清晰,笔者推荐如下文章:

另外,笔者也整理了下 Hystrix 的特性如下( 可能不是很严谨,主要辅助理解 ) :

  • 断路器机制
    • 计算线路健康度
  • Fallback ( 失败回退 )
  • 资源隔离
    • 方式
      • 线程池
      • 信号量
    • 依赖隔离
  • 执行模型
    • 同步执行
    • 异步执行
    • Reactive模式执行
      • observe
      • toObservable
  • 运维平台
    • 基础 Dashboard
    • 整合 Turbine
  • 缓存
  • 请求合并( HystrixCollapser )

4. 彩蛋

知识星球

为了显得本文的诚意( 真的不是水更 ),友情提示如下:

Hystrix 基于 RxJava 实现,所以笔者推荐阅读如下文章 :

可能一开始理解会比较困难,保持耐心,你即将打开一个新的世界。对了,变换( #lift(Operator) ) 会是一个难点,我相信你可以理解。


胖友,分享一波朋友圈可好!

对了,这是一个系列文,所以,千万不要错过。

文章目录
  1. 1. 1. 依赖工具
  2. 2. 2. 源码拉取
  3. 3. 3. 运行示例
  4. 4. 4. 彩蛋