熔斷器 Hystrix 原始碼解析 —— 除錯環境搭建

芋道原始碼_以德服人_不服就幹發表於2017-11-11

摘要: 原創出處 www.iocoder.cn/Hystrix/bui… 「芋道原始碼」歡迎轉載,保留摘要,謝謝!

本文主要基於 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. 原始碼拉取

從官方倉庫 github.com/Netflix/Hys… 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) ) 會是一個難點,我相信你可以理解。


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

對了,這是一個系列文,所以,千萬不要錯過。

相關文章