摘要: 原創出處 www.iocoder.cn/Hystrix/bui… 「芋道原始碼」歡迎轉載,保留摘要,謝謝!
本文主要基於 Hystrix 1.5.X 版本
???關注微信公眾號:【芋道原始碼】有福利:
- RocketMQ / MyCAT / Sharding-JDBC 所有原始碼分析文章列表
- RocketMQ / MyCAT / Sharding-JDBC 中文註釋原始碼 GitHub 地址
- 您對於原始碼的疑問每條留言都將得到認真回覆。甚至不知道如何讀原始碼也可以請教噢。
- 新的原始碼解析文章實時收到通知。每週更新一篇左右。
- 認真的原始碼交流微信群。
1. 依賴工具
- Gradle
- JDK
- IntelliJ IDEA
推薦 Spring Cloud 書籍:
- 請支援正版。下載盜版,等於主動編寫低階 BUG 。
- 程式猿DD —— 《Spring Cloud微服務實戰》
- 周立 —— 《Spring Cloud與Docker微服務架構實戰》
- 兩書齊買,京東包郵。
2. 原始碼拉取
從官方倉庫 github.com/Netflix/Hys… Fork
出屬於自己的倉庫。為什麼要 Fork
?既然開始閱讀、除錯原始碼,我們可能會寫一些註釋,有了自己的倉庫,可以進行自由的提交。?
使用 IntelliJ IDEA
從 Fork
出來的倉庫拉取程式碼。在專案路徑下,在命令列執行 ./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)
) 會是一個難點,我相信你可以理解。
胖友,分享一波朋友圈可好!
對了,這是一個系列文,所以,千萬不要錯過。