Feign中使用Sentinel熔斷器防止服務(wù)雪崩

服務(wù)故障雪崩效應(yīng)

在微服務(wù)架構(gòu)中,根據(jù)業(yè)務(wù)來拆分成一個(gè)個(gè)的服務(wù)敦捧,服務(wù)與服務(wù)之間可以通過 RPC 相互調(diào)用,在 Spring Cloud 中可以用 RestTemplate + LoadBalanceClient 和 Feign 來調(diào)用。為了保證其高可用锅风,單個(gè)服務(wù)通常會(huì)集群部署。由于網(wǎng)絡(luò)原因或者自身的原因线婚,服務(wù)并不能保證 100% 可用遏弱,如果單個(gè)服務(wù)出現(xiàn)問題,調(diào)用這個(gè)服務(wù)就會(huì)出現(xiàn)線程阻塞塞弊,此時(shí)若有大量的請(qǐng)求涌入漱逸,Servlet 容器的線程資源會(huì)被消耗完畢,導(dǎo)致服務(wù)癱瘓游沿。服務(wù)與服務(wù)之間的依賴性饰抒,故障會(huì)傳播,會(huì)對(duì)整個(gè)微服務(wù)系統(tǒng)造成災(zāi)難性的嚴(yán)重后果诀黍,這就是服務(wù)故障的雪崩效應(yīng)袋坑。

概念

服務(wù)熔斷
一般是指軟件系統(tǒng)中,由于某些原因使得服務(wù)出現(xiàn)了過載現(xiàn)象眯勾,為防止造成整個(gè)系統(tǒng)故障枣宫,從而采用的一種保護(hù)措施,所以很多地方把熔斷亦稱為過載保護(hù)吃环。很多時(shí)候剛開始可能只是系統(tǒng)出現(xiàn)了局部的也颤、小規(guī)模的故障,然而由于種種原因郁轻,故障影響的范圍越來越大翅娶,最終導(dǎo)致了全局性的后果文留。
適用場(chǎng)景:防止應(yīng)用程序直接調(diào)用那些很可能會(huì)調(diào)用失敗的遠(yuǎn)程服務(wù)或共享資源

服務(wù)降級(jí):
當(dāng)服務(wù)器壓力劇增的情況下,根據(jù)當(dāng)前業(yè)務(wù)情況及流量對(duì)一些服務(wù)和頁面有策略的降級(jí)竭沫,以此釋放服務(wù)器資源以保證核心任務(wù)的正常運(yùn)行燥翅。

Feign 中使用 Sentinel

如果要在項(xiàng)目中引入 Sentinel,使用 group ID 為 org.springframework.cloud 和 artifact ID 為 spring-cloud-starter-alibaba-sentinel 的 starter蜕提。

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

Sentinel 適配了 Feign 組件森书。但默認(rèn)是關(guān)閉的。需要在配置文件中配置打開它贯溅,在配置文件增加以下代碼:

feign:
  sentinel:
    enabled: true

在 Service 中增加 fallback 指定類

package com.dsy.spring.cloud.alibaba.nacos.consumer.feign.service;

import com.dsy.spring.cloud.alibaba.nacos.consumer.feign.service.fallback.EchoServiceFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
 * @author sanya deng
 * @version 1.0.0
 * @Title: EchoService
 * @ProjectName SpringCloud
 * @Description: TODO
 * @email forestsancy@163.com
 * @date 2019-04-12 16:31
 */
//通過 @FeignClient("服務(wù)名") 注解來指定調(diào)用哪個(gè)服務(wù)
@FeignClient(value = "nacos-provider", fallback = EchoServiceFallback.class)
public interface EchoService {

    @GetMapping(value = "/echo/{message}")
    String echo(@PathVariable("message") String message);
    
}

創(chuàng)建熔斷器類并實(shí)現(xiàn)對(duì)應(yīng)的 Feign 接口

package com.dsy.spring.cloud.alibaba.nacos.consumer.feign.service.fallback;

import com.dsy.spring.cloud.alibaba.nacos.consumer.feign.service.EchoService;
import org.springframework.stereotype.Component;

/**
 * @author sanya deng
 * @version 1.0.0
 * @Title: EchoServiceFallback
 * @ProjectName SpringCloud
 * @Description: TODO
 * @email forestsancy@163.com
 * @date 2019-04-15 10:43
 */

@Component
public class EchoServiceFallback implements EchoService {

    @Override
    public String echo(String message) {
        return "echo fallback";
    }
}

測(cè)試熔斷器

通過curl 訪問 http://127.0.0.1:9093/echo/hi 拄氯,服務(wù)可以正常訪問

圖片.png

關(guān)閉服務(wù)提供者,再通過curl 訪問 http://127.0.0.1:9093/echo/hi

圖片.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末它浅,一起剝皮案震驚了整個(gè)濱河市译柏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌姐霍,老刑警劉巖鄙麦,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異镊折,居然都是意外死亡胯府,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門恨胚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來骂因,“玉大人,你說我怎么就攤上這事赃泡『ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵升熊,是天一觀的道長(zhǎng)俄烁。 經(jīng)常有香客問我,道長(zhǎng)级野,這世上最難降的妖魔是什么页屠? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮蓖柔,結(jié)果婚禮上辰企,老公的妹妹穿的比我還像新娘。我一直安慰自己况鸣,他們只是感情好蟆豫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著懒闷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上愤估,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天帮辟,我揣著相機(jī)與錄音,去河邊找鬼玩焰。 笑死由驹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的昔园。 我是一名探鬼主播蔓榄,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼默刚!你這毒婦竟也來了甥郑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤荤西,失蹤者是張志新(化名)和其女友劉穎澜搅,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體邪锌,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡勉躺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了觅丰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饵溅。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖妇萄,靈堂內(nèi)的尸體忽然破棺而出蜕企,到底是詐尸還是另有隱情,我是刑警寧澤嚣伐,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布糖赔,位于F島的核電站,受9級(jí)特大地震影響轩端,放射性物質(zhì)發(fā)生泄漏放典。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一基茵、第九天 我趴在偏房一處隱蔽的房頂上張望奋构。 院中可真熱鬧,春花似錦拱层、人聲如沸弥臼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽径缅。三九已至掺栅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間纳猪,已是汗流浹背氧卧。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留氏堤,地道東北人沙绝。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像鼠锈,于是被迫代替她去往敵國(guó)和親闪檬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353