最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

java架構(gòu)師高端課微服務(wù)_05_SpringCloud_Netflix_Hystrix

2020-07-06 15:45 作者:自學(xué)Python的小姐姐呀  | 我要投稿

主要內(nèi)容

Hystrix簡(jiǎn)介

服務(wù)降級(jí)

服務(wù)熔斷

請(qǐng)求緩存

Feign的雪崩處理

可視化的數(shù)據(jù)監(jiān)控Hystrix-dashboard

學(xué)習(xí)目標(biāo)

一、?Hystrix簡(jiǎn)介

1?什么是災(zāi)難性雪崩效應(yīng)

造成災(zāi)難性雪崩效應(yīng)的原因,可以簡(jiǎn)單歸結(jié)為下述三種:

服務(wù)提供者不可用。如:硬件故障、程序BUG、緩存擊穿、并發(fā)請(qǐng)求量過(guò)大等。

重試加大流量。如:用戶重試、代碼重試邏輯等。

服務(wù)調(diào)用者不可用。如:同步請(qǐng)求阻塞造成的資源耗盡等。

雪崩效應(yīng)最終的結(jié)果就是:服務(wù)鏈條中的某一個(gè)服務(wù)不可用,導(dǎo)致一系列的服務(wù)不可用,最終造成服務(wù)邏輯崩潰。這種問(wèn)題造成的后果,往往是無(wú)法預(yù)料的。

解決災(zāi)難性雪崩效應(yīng)的方式通常有:降級(jí)、熔斷請(qǐng)求緩存。

2??什么是Hystrix

Hystrix?[h?st'r?ks],中文含義是豪豬,因其背上長(zhǎng)滿棘刺,從而擁有了自我保護(hù)的能力。本文所說(shuō)的Hystrix是Netflix開(kāi)源的一款容錯(cuò)框架,同樣具有自我保護(hù)能力。為了實(shí)現(xiàn)容錯(cuò)和自我保護(hù),下面我們看看Hystrix如何設(shè)計(jì)和實(shí)現(xiàn)的。

Hystrix設(shè)計(jì)目標(biāo):

1、?對(duì)來(lái)自依賴的延遲和故障進(jìn)行防護(hù)和控制——這些依賴通常都是通過(guò)網(wǎng)絡(luò)訪問(wèn)的

2、?阻止故障的連鎖反應(yīng)

3、?快速失敗并迅速恢復(fù)

4、?回退并優(yōu)雅降級(jí)

5、?提供近實(shí)時(shí)的監(jiān)控與告警

Hystrix遵循的設(shè)計(jì)原則:

1、?防止任何單獨(dú)的依賴耗盡資源(線程)

2、?過(guò)載立即切斷并快速失敗,防止排隊(duì)

3、?盡可能提供回退以保護(hù)用戶免受故障

4、?使用隔離技術(shù)(例如隔板,泳道和斷路器模式)來(lái)限制任何一個(gè)依賴的影響

5、?通過(guò)近實(shí)時(shí)的指標(biāo),監(jiān)控和告警,確保故障被及時(shí)發(fā)現(xiàn)

6、?通過(guò)動(dòng)態(tài)修改配置屬性,確保故障及時(shí)恢復(fù)

7、?防止整個(gè)依賴客戶端執(zhí)行失敗,而不僅僅是網(wǎng)絡(luò)通信

Hystrix如何實(shí)現(xiàn)這些設(shè)計(jì)目標(biāo)?

1、?使用命令模式將所有對(duì)外部服務(wù)(或依賴關(guān)系)的調(diào)用包裝在HystrixCommand或HystrixObservableCommand對(duì)象中,并將該對(duì)象放在單獨(dú)的線程中執(zhí)行;

2、?每個(gè)依賴都維護(hù)著一個(gè)線程池(或信號(hào)量),線程池被耗盡則拒絕請(qǐng)求(而不是讓請(qǐng)求排隊(duì))。

3、?記錄請(qǐng)求成功,失敗,超時(shí)和線程拒絕。

4、?服務(wù)錯(cuò)誤百分比超過(guò)了閾值,熔斷器開(kāi)關(guān)自動(dòng)打開(kāi),一段時(shí)間內(nèi)停止對(duì)該服務(wù)的所有請(qǐng)求。

5、?請(qǐng)求失敗,被拒絕,超時(shí)或熔斷時(shí)執(zhí)行降級(jí)邏輯。

6、?近實(shí)時(shí)地監(jiān)控指標(biāo)和配置的修改。

?

在Spring cloud中處理服務(wù)雪崩效應(yīng),都需要依賴hystrix組件。在Application Client應(yīng)用的pom文件中都需要引入下述依賴:

二、?服務(wù)降級(jí)

降級(jí)是指,當(dāng)請(qǐng)求超時(shí)、資源不足等情況發(fā)生時(shí)進(jìn)行服務(wù)降級(jí)處理,不調(diào)用真實(shí)服務(wù)邏輯,而是使用快速失敗(fallback)方式直接返回一個(gè)托底數(shù)據(jù),保證服務(wù)鏈條的完整,避免服務(wù)雪崩。

解決服務(wù)雪崩效應(yīng),都是避免application client請(qǐng)求application service時(shí),出現(xiàn)服務(wù)調(diào)用錯(cuò)誤或網(wǎng)絡(luò)問(wèn)題。處理手法都是在application client中實(shí)現(xiàn)。我們需要在application client相關(guān)工程中導(dǎo)入hystrix依賴信息。并在對(duì)應(yīng)的啟動(dòng)類(lèi)上增加新的注解@EnableCircuitBreaker,這個(gè)注解是用于開(kāi)啟hystrix熔斷器的,簡(jiǎn)言之,就是讓代碼中的hystrix相關(guān)注解生效。

具體實(shí)現(xiàn)過(guò)程如下:

1?修改application service代碼

修改application service工程中的代碼,模擬超時(shí)錯(cuò)誤。此模擬中,讓服務(wù)端代碼返回之前休眠2000毫秒,替代具體的復(fù)雜服務(wù)邏輯。

2??application client POM依賴

3??application client容錯(cuò)處理代碼

4??application client配置文件application.yml


5??application client啟動(dòng)類(lèi)


三、?服務(wù)熔斷

當(dāng)一定時(shí)間內(nèi),異常請(qǐng)求比例(請(qǐng)求超時(shí)、網(wǎng)絡(luò)故障、服務(wù)異常等)達(dá)到閥值時(shí),啟動(dòng)熔斷器,熔斷器一旦啟動(dòng),則會(huì)停止調(diào)用具體服務(wù)邏輯,通過(guò)fallback快速返回托底數(shù)據(jù),保證服務(wù)鏈的完整。

熔斷有自動(dòng)恢復(fù)機(jī)制,如:當(dāng)熔斷器啟動(dòng)后,每隔5秒,嘗試將新的請(qǐng)求發(fā)送給服務(wù)提供者,如果服務(wù)可正常執(zhí)行并返回結(jié)果,則關(guān)閉熔斷器,服務(wù)恢復(fù)。如果仍舊調(diào)用失敗,則繼續(xù)返回托底數(shù)據(jù),熔斷器持續(xù)開(kāi)啟狀態(tài)。

具體實(shí)現(xiàn)過(guò)程如下:

1?application client POM依賴

2??application client容錯(cuò)處理代碼


3??application client配置文件application.yml


4??application client啟動(dòng)類(lèi)


四、?請(qǐng)求緩存

請(qǐng)求緩存通常意義上說(shuō),就是將同樣的GET請(qǐng)求結(jié)果緩存起來(lái),使用緩存機(jī)制(如redis、mongodb)提升請(qǐng)求響應(yīng)效率。

使用請(qǐng)求緩存時(shí),需要注意非冪等性操作對(duì)緩存數(shù)據(jù)的影響。

請(qǐng)求緩存是依托某一緩存服務(wù)來(lái)實(shí)現(xiàn)的。在案例中使用redis作為緩存服務(wù)器,那么可以使用spring-data-redis來(lái)實(shí)現(xiàn)redis的訪問(wèn)操作。

1?修改application service代碼


2??application client POM依賴


3??application client 容錯(cuò)處理代碼


5??application client 啟動(dòng)類(lèi)



五、?Openfeign的雪崩處理

在聲明式遠(yuǎn)程服務(wù)調(diào)用Openfeign中,實(shí)現(xiàn)服務(wù)災(zāi)難性雪崩效應(yīng)處理也是通過(guò)Hystrix實(shí)現(xiàn)的。而feign啟動(dòng)器spring-cloud-starter-openfeign中是包含Hystrix相關(guān)依賴的。如果只使用服務(wù)降級(jí)功能不需要做獨(dú)立依賴。如果需要使用Hystrix其他服務(wù)容錯(cuò)能力,需要依賴spring-cloud-starter-netflix-hystrix資源。從Dalston版本后,feign默認(rèn)關(guān)閉Hystrix支持。所以必須在全局配置文件中開(kāi)啟feign技術(shù)中的Hystrix支持。具體實(shí)現(xiàn)如下:

1?服務(wù)降級(jí)

1.1?POM依賴

Openfeign的啟動(dòng)器依賴spring-cloud-starter-openfeign中,自帶Hystrix處理相關(guān)依賴,所以不需要修改POM依賴,直接通過(guò)配置即可開(kāi)啟容錯(cuò)處理機(jī)制。

1.1?application client 接口

1.3?application client 接口實(shí)現(xiàn)


1.4?application client 配置文件application.yml










java架構(gòu)師高端課微服務(wù)_05_SpringCloud_Netflix_Hystrix的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
永泰县| 湖南省| 乃东县| 棋牌| 宜君县| 云霄县| 麻栗坡县| 开封市| 阜新| 柳江县| 东安县| 五河县| 赣榆县| 昌图县| 拉孜县| 军事| 封开县| 保靖县| 顺昌县| 胶州市| 江源县| 德阳市| 曲周县| 襄樊市| 海城市| 洞口县| 新绛县| 阳谷县| 应用必备| 辛集市| 岚皋县| 阳朔县| 株洲市| 太谷县| 嘉定区| 罗甸县| 青浦区| 仲巴县| 曲阳县| 东港市| 五原县|