熔断器 Hystrix 源码解析 —— 调试环境搭建

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 熔断器 Hystrix 源码解析 —— 调试环境搭建

熔断器 Hystrix 源码解析 —— 调试环境搭建

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

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

  • 1. 依赖工具
  • 2. 源码拉取
  • 3. 运行示例
  • 4. 彩蛋
  • 🙂🙂🙂关注微信公众号:【芋道源码】有福利:

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

    1. 依赖工具

  • Gradle
  • JDK
  • IntelliJ IDEA
  • 推荐 Spring Cloud 书籍

  • 请支持正版。下载盗版,**等于主动编写低级 BUG** 。
  • 程序猿DD —— 《Spring Cloud微服务实战》
  • 周立 —— 《Spring Cloud与Docker微服务架构实战》
  • 两书齐买,京东包邮。
  • 2. 源码拉取

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

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

    本文基于 master 分支。

    3. 运行示例

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

    熔断器 Hystrix 源码解析 —— 调试环境搭建
  • `basic` 包 :针对 Hystrix 每个特性提供小的单元测试示例。你可以从 CommandHelloWorld 开始尝试。
  • `demo` 包 :结合实际场景的实战小例子。运行入口为 HystrixCommandDemo 或者 HystrixCommandAsyncDemo 。恩,聪慧如你,从名字能看出它们的区别点。
  • 可能有部分同学对 Hystrix 的特性了解的不是很清晰,笔者推荐如下文章:

  • 《【翻译】Hystrix 文档 - 实现原理》
  • 《hystrix 在 spring mvc 的使用》
  • 另外,笔者也整理了下 Hystrix 的特性如下( 可能不是很严谨,主要辅助理解 ) :

  • 断路器机制
    • 计算线路健康度
    • Fallback ( 失败回退 )

      资源隔离

    • 线程池
    • 信号量
    • 方式
    • 依赖隔离
    • 执行模型

    • observe
    • toObservable
    • 同步执行
    • 异步执行
    • Reactive模式执行
    • 运维平台

    • 基础 Dashboard
    • 整合 Turbine
    • 缓存

      请求合并( HystrixCollapser )

      4. 彩蛋

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

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

    • 《给 Android 开发者的 RxJava 详解》
    • 《大话 RxJava》系列
    • 《ReactiveX/RxJava文档中文版》
    • 可能一开始理解会比较困难,保持耐心,你即将打开一个新的世界。对了,变换( #lift(Operator) ) 会是一个难点,我相信你可以理解。

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

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

    本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

    本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

    原文链接:blog.ouyangsihai.cn >> 熔断器 Hystrix 源码解析 —— 调试环境搭建