服务容错和Hystrix
生活随笔
收集整理的這篇文章主要介紹了
服务容错和Hystrix
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在微服務(wù)架構(gòu)中,通常會(huì)有多個(gè)服務(wù)層調(diào)用,如果某個(gè)服務(wù)不可用,導(dǎo)致故障,造成整個(gè)系統(tǒng)不可用的情況,被稱為雪崩效應(yīng),如圖所示,比如我這里有三個(gè)服務(wù),A/B/C三個(gè)服務(wù),其實(shí)中A會(huì)調(diào)用B服務(wù),B又會(huì)調(diào)用C服務(wù),加入B調(diào)用C服務(wù)的時(shí)候,由于某種原因呢,調(diào)用不成功,那么B就會(huì)一直重試,同步等待會(huì)資源耗盡,結(jié)果B服務(wù)也不可用了,緊接著因?yàn)锳調(diào)用B,那B又不可用了,A又不停的重試B,最后呢C不可用,B不可用,A/B也不可用,這樣子就導(dǎo)致整個(gè)系統(tǒng)都不可用了,當(dāng)然這是非常糟糕的事情,所以雪崩效應(yīng)是我們要極力避免的
Spring Cloud家族中,防雪崩的利器,就是Spring Cloud Hystrix,Spring Cloud Hystrix,也是基于Netflix,對(duì)應(yīng)的開(kāi)源框架,Hystrix實(shí)現(xiàn)的,Hystrix的中文意思呢,是豪豬,這豬在現(xiàn)實(shí)生活中還真沒(méi)見(jiàn)過(guò)
所以我也不知道豬肉好不好吃,這豪豬身上長(zhǎng)滿了刺,能保護(hù)自己不受天敵的傷害,跟刺猬一樣,代表的是一種防御的機(jī)制,這和Hystrix框架本身的功能,不謀而合,所以才起名這個(gè)名字,Hystrix的目的,就是為了給服務(wù)提供一系列容錯(cuò)保護(hù)機(jī)制,還記得Eureka的意思嗎,Eureka這個(gè)單詞翻譯過(guò)來(lái),其中有一個(gè)意思,就是找到了,你看Eureka是服務(wù)注冊(cè)中心,找到了,很契合他的作用,所以這名字他還真不是隨便起的,有他的意義在的,Spring Cloud Hystrix,具備服務(wù)降級(jí),依賴隔離,服務(wù)熔斷,監(jiān)控等強(qiáng)大的功能
我們先來(lái)看看服務(wù)降級(jí),服務(wù)降級(jí)說(shuō)的好像很神秘一樣,其實(shí)我們都遇到過(guò),比如雙十一的時(shí)候,會(huì)給出一個(gè)提示說(shuō),被擠爆了,你會(huì)看到某些APP,特別是秒殺的時(shí)候,提示你網(wǎng)絡(luò)開(kāi)銷太大,請(qǐng)稍后再試,諸如此類的提示了,大家應(yīng)該都有印象,服務(wù)降級(jí)指導(dǎo)思想,是要區(qū)分業(yè)務(wù),具體是要優(yōu)先核心服務(wù),非核心服務(wù)不可用,或者弱可用,就有點(diǎn)保帥的意思,比如站在整個(gè)系統(tǒng)來(lái)看,假設(shè)我們的業(yè)務(wù),突然涌入大量流量,服務(wù)器資源就這么多,那么我們應(yīng)該優(yōu)先選擇商品訂單,支付服務(wù),這些是最核心的,你得保證這些核心服務(wù)可用,那另外比如廣告啊,積分,屬于非核心服務(wù),這種業(yè)務(wù)暫時(shí)不提供服務(wù),或者是提供部分服務(wù),那其實(shí)也是可以接受的,再比如某個(gè)具體微服務(wù)中,就商品服務(wù)吧,那可能買家查詢服務(wù)肯定是核心服務(wù),優(yōu)先保護(hù)她的可用,那賣家查詢呢,就可能非核心服務(wù),可以區(qū)別對(duì)待,這種就看你具體的業(yè)務(wù)場(chǎng)景了,Hystrix的應(yīng)用降級(jí),是非常簡(jiǎn)單,概括來(lái)講,通過(guò)Hystrix Command注解來(lái)指定,fallbackMethod實(shí)現(xiàn)降級(jí)邏輯即可,我們具體來(lái)看看代碼的實(shí)現(xiàn)
?
總結(jié)
以上是生活随笔為你收集整理的服务容错和Hystrix的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。