Hystrix 簡介

大家好,今天我們開始一個(gè)新專題 — Hystrix。關(guān)于 Hystrix ,想必使用過 Spring Cloud 框架的同學(xué)都有所耳聞,它的知識點(diǎn)相對來說還是比較龐大的,如果單靠本專題是介紹不完的。
本專題我們重點(diǎn)講解針對 Hystrix 在基于 Spring Cloud 框架中的基本概念和基本用法,在介紹完基本使用之后,會帶領(lǐng)大家從 0 到 1 的來搭建一款基于 Spring Cloud 框架的微服務(wù) Demo 項(xiàng)目。
本文我們主要先介紹一下 Hystrix 是什么?有哪些特性?優(yōu)缺點(diǎn)在哪?為什么我們需要在項(xiàng)目開發(fā)中應(yīng)用 Hystrix ?
1. 什么是 Hystrix ?
什么是 Hystrix 呢?在 Hystrix 官網(wǎng)中是這么介紹的:
對于分布式系統(tǒng)的延遲和容錯(cuò). —官網(wǎng)
上述定義是官網(wǎng)的抽象描述,同學(xué)們可能不太理解,下面我對定義進(jìn)行一些必要的解釋。
通俗來講,我們可以這樣理解:Hystrix 是針對與分布式系統(tǒng)中所產(chǎn)生的延遲問題和容錯(cuò)問題的一種解決方案,也就是說,Hystrix 就是為了解決在分布式系統(tǒng)中出現(xiàn)的系統(tǒng)間延遲問題,以及服務(wù)間容錯(cuò)問題所誕生的一款微服務(wù)組件。
2. 為什么要使用 Hystrix
那么我們?yōu)槭裁匆褂?Hystrix 呢?
2.1 配置簡單,容易上手
由于 Hystrix 是 Spring Cloud 框架中的一款組件,又因?yàn)?Spring Cloud 框架的運(yùn)行是依賴于 Spring Boot 框架,所以,我們在使用 Hystrix 時(shí),只需要將 Hystrix 的依賴交給 Spring 去管理就好了,我們只需要將 Hystrix 的依賴引入到項(xiàng)目中去即可。
在將 Hystrix 依賴引入到項(xiàng)目中后,由于 Spring Boot 框架的特性,我們不需要進(jìn)行繁瑣的 xml 文件的配置,只需要將和 Hystrix 相關(guān)的配置項(xiàng)以一個(gè)配置類的形式,或直接將其配置到配置源文件中去即可。
2.2 功能強(qiáng)大,持久穩(wěn)定
Hystrix 針對與分布式系統(tǒng),其提供了服務(wù)容錯(cuò)、服務(wù)降級、服務(wù)反饋、服務(wù)快速失敗,快速恢復(fù)、延遲降低、服務(wù)實(shí)時(shí)監(jiān)控等功能,經(jīng)過近 6 年的發(fā)展,Hystrix 已經(jīng)形成了較為穩(wěn)定的生態(tài)社區(qū)以及服務(wù)支撐,目的就是為了保證我們的分布式系統(tǒng)能夠安全平穩(wěn)的運(yùn)行。
總結(jié):
Hystrix 其實(shí)就是為了解決在分布式系統(tǒng)中出現(xiàn)的延遲問題、服務(wù)間問題而來的一款微服務(wù)組件,其依賴于 Spring Cloud 框架,通過提供一系列保障措施,來保證我們的分布式系統(tǒng)可以安全平穩(wěn)的運(yùn)行。
3. Hystrix 的版本說明
Hystrix 從 2012 年誕生,到現(xiàn)在已經(jīng)有 8 個(gè)年頭了,其中,持續(xù)發(fā)展了 6 年,在這中間已經(jīng)迭代升級了很多版本,目前,最新的版本是 v1.5.18,每個(gè)版本都有不同的特性,下面介紹一個(gè)主要使用的版本和新版本的特性。
-
V1.0.0 - 1.2.X:自 Hystrix 誕生而演變的階段版本,也可以稱為最初發(fā)布版本,現(xiàn)在基本已經(jīng)很少使用了;
-
V1.3.X - 1.4.X: 目前使用較多的版本,也是基本穩(wěn)定的版本;
-
V1.5.X: 目前發(fā)布的最新版本,于 2018 年 9 月 17 日發(fā)布,主要是優(yōu)化了 Hystrix 之前版本中不穩(wěn)定的因素,以及其中的一些 Bug 項(xiàng),最新版本較之前發(fā)布的版本更好用、更穩(wěn)定、配置更靈活。
Tips: 鑒于此,本套課程采用 V1.5.12 版本進(jìn)行講解,請同學(xué)們務(wù)必和老師所使用的版本保持一致,以避免后續(xù)因?yàn)榘姹径鸬牟槐匾膯栴},以及一些兼容性問題。
4. Hystrix 的優(yōu)點(diǎn)
-
配置靈活 : 支持通過配置類、yml 配置源文件的形式來對 Hystrix 進(jìn)行配置。
-
功能強(qiáng)大 : 提供了豐富的保障措施,例如,服務(wù)降級、服務(wù)容錯(cuò)等,很大力度上保證了我們的分布式項(xiàng)目的平穩(wěn)運(yùn)行。
5. Hystrix 的缺點(diǎn)
-
有一定的不穩(wěn)定性 : 經(jīng)過長時(shí)間的使用可以得出,Hystrix 有時(shí)會出現(xiàn)丟數(shù)據(jù)、節(jié)點(diǎn)宕機(jī)問題,但這不是經(jīng)常發(fā)生的。
-
可能會有意料之外的 Bug : 一般而言,Hystrix 就是對分布式微服務(wù)進(jìn)行管理,所以一般不會出現(xiàn)由 Hystrix 管理的節(jié)點(diǎn)所宕機(jī)的情況,但是這個(gè)問題也有一定頻率出現(xiàn)。
6. 學(xué)習(xí)基礎(chǔ)
-
學(xué)習(xí)本門課程,首先需要對 Java 的 Spring Boot 框架有較為熟練的使用經(jīng)驗(yàn),以及對 Spring Cloud 框架有初步的了解和基本認(rèn)知;
-
對 Spring Cloud 框架感興趣以及對 Spring Cloud 生態(tài)體系中各組件,比如:Hystrix 感興趣的同學(xué)。
7. 總結(jié)

本小節(jié)詳細(xì)介紹了 Hystrix 這一微服務(wù)輔助工具,從 Hystrix 的定義開始,到 Hystrix 不同版本間特性差異的闡述,再到最后 Hystrix 的優(yōu)缺點(diǎn)總結(jié)對比。
希望沒有接觸過 Hystrix 的同學(xué),通過對本節(jié)內(nèi)容的學(xué)習(xí)可以簡單了解什么是 Hystrix ,以及它能為我們做哪些事情,本篇是整套課程的開端,希望各位同學(xué)能夠持續(xù)關(guān)注,謝謝。