精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

微服務實戰:服務熔斷降級組件 Hystrix 工作原理及用法,實戰講解!

開發 架構
在微服務架構中,服務之間的依賴關系錯綜復雜,一個服務的失敗可能會影響到調用它的其他服務,進而引發整個系統的崩潰。

一、背景介紹

在上一篇文章中,我們介紹了 Spring Cloud 技術體系中最核心的組件之一 Feign,它主要作用是簡化 HTTP 客戶端的開發工作,通過簡單的幾個注解配置即可完成 HTTP 調用的綁定操作。

今天通過這篇文章,結合之前的知識,我們一起來了解一下 Spring Cloud 技術體系中另一個最核心的組件之一 Hystrix。

二、Hystrix 簡介

Spring Cloud Hystrix 是一套基于 Netflix Hystrix 實現的斷路器工具,主要作用是處理那些可能會失敗并且需要被隔離的遠程服務調用,以避免導致整個系統崩潰。

在微服務架構中,業務服務之間的調用通常錯綜復雜,比如某個服務接口 A,當收到用戶請求的時候,會調用服務 B 的接口;服務接口 C 可能也會調用服務 B,依次類推。

圖片圖片

這種請求鏈路非常常見,假設服務 B 因為請求量過大而出現無法響應,導致服務不可用。此時所有調用服務 B 的客戶端都會出現異常,甚至會像滾雪球一樣放大到所有相關的服務。

圖片圖片

對于要求高可用的項目來說,顯然這是不可接受的。為了解決這個問題,因此產生了斷路器這類服務保護的工具。

Hystrix 類似于電路中的斷路器,當線路中有點電器發生短路時,此時斷路器就會發揮作用,它會及時的切斷故障電路,防止發生過載、發熱、甚至起火等嚴重后果,以保護線路的安全。

引入 Hystrix 之后,服務的遠程調用邏輯可以用如下圖來簡要概括。

圖片圖片

當調用遠程服務失敗率達到一定閾值時,Hystrix 會自動打開斷路器,阻止對下游服務的進一步調用,從而避免系統資源的浪費和可能的級聯失敗;當下游服務恢復正常之后,斷路器會在一段時間后自動或半自動地關閉,嘗試恢復下游服務調用。

下面我們通過具體的例子,看看如何使用 Hystrix 來實現服務自動熔斷。

三、方案實踐

3.1、Hystrix 使用示例

在此,我們以之前介紹的 Ribbon 為例,依次創建eureka-server、eureka-provider工程,就不重復粘貼了。

3.1.1、創建服務消費者

根據eureka-consumer-ribbon復制一個服務消費者工程,命名為eureka-consumer-ribbon-hystrix,并在pom.xml中引入 Hystrix 依賴包,示例如下:

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

3.1.2、開啟掃描 Hystrix 功能

然后,創建一個服務啟動類并添加@EnableCircuitBreaker或者@EnableHystrix注解,表示開啟掃描 Hystrix 功能。

@EnableCircuitBreaker
@EnableDiscoveryClient
@SpringBootApplication
publicclass Application {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        returnnew RestTemplate();
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

3.1.3、編寫服務降級方法

接著,創建一個遠程調用服務RpcService并使用@HystrixCommand注解指定服務遠程調用失敗后的降級方法,示例如下:

@Service
publicclass RpcService {

    @Autowired
    private RestTemplate restTemplate;

    @HystrixCommand(fallbackMethod = "fallback")
    public String hello() {
        String url = "http://eureka-provider/hello";
        String result = restTemplate.getForObject(url, String.class);
        return result;
    }

    /**
     * 服務降級方法
     * @return
     */
    public String fallback() {
        return"發起遠程調用失敗,服務自動熔斷";
    }
}

3.1.4、編寫遠程調用類

最后,創建一個controller,通過定義的遠程調用服務發起請求。

@RestController
publicclass HelloController {

    @Autowired
    private RpcService rpcService;


    /**
     * 發起遠程調用測試
     * @return
     */
    @GetMapping("/rpc")
    public String rpc() {
        String result = rpcService.hello();
        return"發起遠程調用,收到返回的信息:" +  result;
    }
}

3.1.5、服務測試

完成以上工程之后,依次將eureka-server、eureka-provider、eureka-consumer-ribbon-hystrix服務啟動起來。

然后在瀏覽器上訪問eureka-consumer-ribbon-hystrix服務中的/rpc接口,中途將eureka-provider服務停掉,可以得到類似于如下內容。

圖片圖片

可以清晰的看到,當客戶端遠程調用失敗后,斷路器自動開啟并調用指定的服務降級方法。

3.1.6、斷路器閾值設置

默認情況下,被 Hystrix 保護的方法,在 10 秒內,調用次數超過了 20 次并且出現 50% 以上的請求發生失敗, 那么斷路器就會進入打開狀態,所有后續的調用都將會由回調方法處理;如果服務提供者掛了,也會直接進入打開狀態。在 5 秒之后,斷路器進入半開狀態,將會再次嘗試調用原始的方法,如果請求成功,斷路器進入關閉狀態。

如果想要調整斷路器閾值,例如在 20 秒內,調用次數超過 30 次并且失敗率超過 30% 時,斷路器自動進入打開狀態,可以通過如下方式進行配置。

@HystrixCommand(fallbackMethod = "fallback",commandProperties = {
        @HystrixProperty(
                name = "circuitBreaker.requestVolumeThreshold",
                value = "30"),
        @HystrixProperty(
                name = "circuitBreaker.errorThresholdPercentage",
                value = "30"),
        @HystrixProperty(
                name = "metrics.rollingStats.timeInMilliseconds",
                value = "20000"),
        @HystrixProperty(
                name = "circuitBreaker.sleepWindowInMilliseconds",
                value = "60000")
})
public String hello() {
    String url = "http://eureka-provider/hello";
    String result = restTemplate.getForObject(url, String.class);
    return result;
}

3.2、Feign 使用 Hystrix

在介紹 Feign 使用方式中,我們有提到過 Feign 不僅整合了 Ribbon,還整合了 Hystrix。因此,我們可以在 Feign 客戶端中直接使用 Hystrix 相關功能。

根據之前的eureka-consumer-feign復制一個服務消費者工程,命名為eureka-consumer-feign-hystrix,相關的依賴包也一起 copy 過來。

3.2.1、添加相關配置

然后,在application.properties配置文件中,開啟 hystrix 熔斷。

# 在Feign中開啟 hystrix熔斷
feign.hystrix.enabled=true

3.2.2、編寫服務回調類

接著,創建回調類RpcServiceHystrix并實現RpcService接口。

@Component
public class RpcServiceHystrix implements RpcService {


    @Override
    public String findByName(@RequestParam(value = "name") String name) {
        return "請求失敗,服務自動降級,請求參數:" +name;
    }
}

3.2.3、指定服務回調類

再然后,在@FeignClient注解中通過fallback屬性指定請求失敗時的回調類;同時,在服務提供者中也增加一個/findByName接口,用于接受請求。

/**
 * 配置要調用的服務實例名稱,并指定請求失敗時的回調類
 */
@FeignClient(name = "eureka-provider", fallback = RpcServiceHystrix.class)
public interface RpcService {

    /**
     * 要調用的目標服務接口地址
     * @return
     */
    @RequestMapping(value = "/findByName")
    String findByName(@RequestParam(value = "name") String name);
}

3.2.4、編寫遠程調用類

最后,創建一個controller,通過定義的 feign 客戶端和 hystrix 熔斷器來調用服務提供方的接口。

@RestController
publicclass HelloController {

    @Autowired
    private RpcService rpcService;


    /**
     * 發起遠程調用測試
     * @return
     */
    @GetMapping("/rpc")
    public String rpc(@RequestParam(value = "name") String name) {
        String result = rpcService.findByName(name);
        return"通過 feign 發起遠程調用(帶 hystrix 熔斷器),收到返回的信息:" +  result;
    }
}

3.2.5、服務測試

完成以上工程之后,依次將eureka-server、eureka-provider、eureka-consumer-feign-hystrix服務啟動起來。

與之類似,然后在瀏覽器上訪問eureka-consumer-feign-hystrix服務中的/rpc接口,中途將eureka-provider服務停掉,可以得到類似于如下內容。

圖片

可以清晰的看到,效果與上文介紹的一樣。當客戶端遠程調用失敗后,斷路器自動開啟并調用指定的服務回調方法。

四、小結

最后總結一下,在微服務架構中,服務之間的依賴關系錯綜復雜,一個服務的失敗可能會影響到調用它的其他服務,進而引發整個系統的崩潰。

Hystrix 就是為了解決這類問題而設計的。Hystrix 具備斷路器模式、服務降級、請求緩存、請求合并、線程隔離、自動回退等強大功能,由 Netflix 開發并開源。

盡管之后 Netflix 宣布對其停止維護,但是 Hystrix 仍然是一個值得學習和了解的重要工具,特別是在理解分布式系統容錯和斷路器模式方面。

五、參考

  1. http://www.ityouknow.com/springcloud/2017/05/16/springcloud-hystrix.html
  2. https://www.didispace.com/spring-cloud/springcloud3.html#netflix-hystrix
責任編輯:武曉燕 來源: 潘志的技術筆記
相關推薦

2025-03-07 08:57:46

HTTP客戶端框架

2025-07-30 02:33:00

2021-05-14 09:15:32

SpringCloud微服務日志

2021-03-16 08:31:59

微服務Sentinel雪崩效應

2020-09-26 10:56:33

服務器熔斷服務隔離

2021-03-09 09:33:42

網關授權微服務

2016-08-25 21:12:31

微服務架構發布

2016-08-25 20:55:19

微服務架構發布

2017-07-03 09:50:07

Spring Clou微服務架構

2021-09-06 11:34:47

架構微服務Hystrix

2021-01-28 10:10:51

微服務后端SpringCloud

2024-11-29 16:02:17

2022-04-09 14:45:02

微服務常見概念Spring

2021-06-09 09:42:50

SpringCloud微服務灰度發布

2021-08-02 09:27:02

微服務接口場景

2021-04-22 09:31:58

服務器微服務配置

2022-06-24 07:08:24

OHOS自定義服務

2021-07-07 10:21:26

技術

2017-11-16 15:45:25

服務降級熔斷

2009-06-27 20:10:00

LinuxNFS原理
點贊
收藏

51CTO技術棧公眾號

3d成人动漫在线| 欧美激情视频三区| 国产精品天天狠天天看| 美女被爆操网站| 国产午夜性春猛交ⅹxxx| 久久av影院| 亚洲每日更新| 欧美一级高清片在线观看| 欧美一区二视频在线免费观看| 久久久久亚洲av无码专区体验| 成人做爰免费视频免费看| 99久久精品国产一区二区三区 | 免费黄色特级片| www.久久久久久| 天天操夜夜操国产精品| 欧美性受xxxx| 日韩av影视| 日韩免费观看一区二区| 亚洲天堂av资源在线观看| 国产精品久久久久影院亚瑟| 日韩av免费网站| 白嫩情侣偷拍呻吟刺激| 色呦呦在线资源| 国产精品一区一区| 美乳少妇欧美精品| 又黄又爽又色的视频| 在线观看麻豆| aaa亚洲精品| 97视频国产在线| 国产真实乱人偷精品| 国产网站在线| 久久这里都是精品| 国产成人欧美在线观看| 日韩中文字幕有码| 欧美日韩国产网站| 欧美日韩激情视频| 欧美日韩国产一二| 日韩精品在线一区二区三区| 欧美伦理在线视频| 欧美揉bbbbb揉bbbbb| 亚洲精品中文字幕在线| 国产毛片在线视频| 欧美三级免费| 亚洲第一福利视频| av片中文字幕| 在线观看二区| 美女一区二区三区| 色偷偷91综合久久噜噜| 色黄视频免费看| 91成人在线| 亚洲欧美激情小说另类| 国产欧美一区二区在线播放| 日韩一区二区视频在线| 国产精品激情电影| 欧美精品一区二区三区一线天视频 | 国产日韩精品一区二区三区| 国产成人精品日本亚洲| 国产精品美女毛片真酒店| 欧美激情影院| 欧美亚洲免费在线一区| 亚洲乱码国产一区三区| 日本福利专区在线观看| 国产乱子伦视频一区二区三区 | 日韩精品一级| 舔着乳尖日韩一区| 日韩欧美亚洲在线| 你懂的免费在线观看视频网站| 日韩二区在线观看| 欧美另类精品xxxx孕妇| av网站免费在线播放| 欧美aaaaaaaa| 欧美日韩另类一区| 精品少妇人妻av免费久久洗澡| 黄色片在线播放| 国产精品中文欧美| 电影午夜精品一区二区三区 | 99精品老司机免费视频| 中文字幕高清不卡| 国产精品播放| 图片区 小说区 区 亚洲五月| 看电视剧不卡顿的网站| 97人人模人人爽人人喊中文字| 黄色激情视频在线观看| 久久国产高清| 久久久久久久一区二区| 亚洲人做受高潮| 中文字幕av一区二区三区人| 日韩一区二区在线播放| 美女扒开腿免费视频| 农村少妇一区二区三区四区五区 | 成人18在线| 高清不卡一区二区| 国产欧美一区二区三区视频| 欧美亚洲精品天堂| 视频在线观看91| 97在线视频精品| 日韩在线 中文字幕| 激情欧美日韩一区| 日韩在线视频导航| 黄色一级片在线| 91久久国产| 91精品国产成人| 国产一国产二国产三| 久久久久av| 久久久国产精品亚洲一区| 性欧美精品男男| 雨宫琴音一区二区三区| 最近2019免费中文字幕视频三| 老女人性淫交视频| 免播放器亚洲| 欧美专区中文字幕| 日本中文字幕网| 男人的天堂亚洲一区| 51精品国产人成在线观看 | 91精品国产综合久久久久久 | 亚洲精品中文综合第一页| 黄色大片在线| 亚洲一区二区av电影| 成人污网站在线观看| caoporn免费在线视频| 国产精品乱人伦一区二区| 97超碰人人澡| 欧美13videosex性极品| 欧美午夜性色大片在线观看| 精品久久一二三| 亚洲国产精选| 日韩一区二区三区免费看| 91网站免费入口| 欧美一区二区三区激情视频| 中文字幕亚洲情99在线| 日本美女黄色一级片| 久久精品一区二区不卡| 国产成人jvid在线播放| 天天操天天舔天天干| 2017欧美狠狠色| 97久久国产亚洲精品超碰热| 热久久久久久| 一本色道久久88亚洲综合88| 性少妇xx生活| 综合精品一区| 国产精品亚洲网站| 欧美黄色小说| 欧美日韩国产页| 91精品啪在线观看国产| 女同性一区二区三区人了人一| 欧美激情在线播放| 国产精选久久久| 成人精品视频一区二区三区尤物| 精品欧美国产| 在线免费观看黄色av| 色婷婷狠狠综合| 国产精品久久久久久久av福利| 视频精品一区| 久久福利网址导航| 国产青青草视频| 亚洲欧美一区二区三区孕妇| 日韩a级在线观看| 少妇一区视频| 日韩一区二区在线观看视频| 91视频青青草| 国产精品外国| 91在线精品播放| 男人的天堂在线| 一本色道久久综合狠狠躁的推荐| 国产熟女高潮一区二区三区| 色婷婷一区二区三区| 久久久久国产视频| 高潮一区二区三区乱码| 中文字幕av一区二区三区| 人人爽人人av| 色天天久久综合婷婷女18| 国产欧美一区二区三区视频| 国产成人无吗| 精品国产免费久久| 欧美福利视频一区二区| 久久免费偷拍视频| 亚洲色图 在线视频| 久草在线综合| 久久久精品亚洲| 国产v在线观看| 国产欧美日韩一区二区三区在线观看| 超级碰在线观看| 精品国产黄a∨片高清在线| 色爱av美腿丝袜综合粉嫩av| 国产女人爽到高潮a毛片| 亚洲成人免费电影| 99视频在线观看视频| 国产免费av一区二区三区| 久久久久久网站| 四虎影院在线播放| 亚洲一区二区三区国产| 精品人妻一区二区免费视频| 老**午夜毛片一区二区三区 | 一本一本久久a久久综合精品| dy888夜精品国产专区| yw视频在线观看| 日韩一区二区三区电影在线观看| 激情五月色婷婷| 国产精品久久久久久久久动漫| 男女高潮又爽又黄又无遮挡| 亚洲日本va| 国产成人精品免高潮费视频| 中文字幕免费高清电视剧网站在线观看 | 精品国产电影一区二区| 中文字幕久久网| 久久精品欧美一区二区三区不卡| 九九热99视频| 欧美少妇xxxx| 波多野结衣一区二区三区在线观看| 亚洲最大成人| 日韩精品中文字幕有码专区| 国产午夜精品一区二区理论影院| 久久久www成人免费无遮挡大片 | 日产国产欧美视频一区精品| 麻豆精品蜜桃一区二区三区| 中文字幕乱码在线播放| 精品亚洲夜色av98在线观看 | 久久精品理论片| 老太脱裤让老头玩ⅹxxxx| 热久久天天拍国产| 久久99九九| 在线中文字幕播放| 欧美精品免费在线| 18免费在线视频| 亚洲欧洲在线观看| 免费看污视频的网站| 久久综合视频网| 亚洲性图第一页| 九色porny丨国产精品| 日本a级片在线观看| 国产影视一区| 久久久久无码国产精品一区| 99re8这里有精品热视频8在线| 久久久久久久国产精品| 里番在线观看网站| 777a∨成人精品桃花网| 国产精品麻豆一区| 久久综合狠狠综合久久激情 | 五月亚洲婷婷| 成人亚洲欧美一区二区三区| 亚洲丝袜精品| 久久亚洲影音av资源网| 国精产品乱码一区一区三区四区| 欧美男女性生活在线直播观看| 综合五月激情网| 成人免费视频一区二区| 日韩欧美亚洲天堂| 精品久久精品| 欧美日韩中文国产一区发布| 欧美午夜寂寞| 精品综合久久| 特黄特色欧美大片| 国产精品最新在线观看| 亚洲精品粉嫩美女一区| 国产成人av在线播放| 欧美最新精品| 国产色综合天天综合网| 免费一级欧美在线观看视频| 国产在线精品一区免费香蕉| 99tv成人影院| 青青a在线精品免费观看| 人成在线免费网站| 欧美资源在线观看| 亚洲www啪成人一区二区| 国产精品久久婷婷六月丁香| 特级毛片在线| 久久久久免费视频| 国产福利在线观看| 日韩精品一区二区三区在线播放| 日韩在线视频不卡| 欧美写真视频网站| 国产精品久久久久久久免费看 | 国产91精品青草社区| 性开放的欧美大片| 日韩一区二区精品视频| 日本黄在线观看| 日韩欧美国产精品| 黄色一级大片在线免费看国产| 亚洲韩国日本中文字幕| 国产裸体无遮挡| 欧美刺激脚交jootjob| 婷婷av一区二区三区| 国产一区二区精品丝袜| 少妇高潮久久久| 亚洲色图综合网| 国产一二区在线观看| 欧美精品福利视频| 小视频免费在线观看| 91精品久久久久久久| 成人看片黄a免费看视频| 免费看成人av| 久久精品国内一区二区三区水蜜桃| 国产精品69久久久| 免费一级欧美片在线观看| 日本一区二区三区在线免费观看| 99久久精品久久久久久清纯| 成人欧美一区二区三区黑人一| 亚洲午夜在线观看视频在线| www.av88| 欧美午夜电影一区| 国产成人三级在线播放| 日韩av在线导航| 视频一区 中文字幕| 国产一区二区美女视频| 欧美14一18处毛片| 欧美日韩国产成人高清视频| 正在播放日韩精品| 亚洲jizzjizz日本少妇| 亚洲精品aaa| 国内精品视频在线播放| 国产欧美一区二区三区精品观看| 国产在线拍揄自揄拍无码| 天天做天天爱天天爽综合网| 久久视频这里有精品| 激情五月婷婷综合网| 亚洲男人天堂av在线| 99久久综合国产精品| 国内偷拍精品视频| 在线免费不卡电影| 在线播放国产一区| 欧美日韩国产免费一区二区| 少妇高潮一区二区三区69| 久久中国妇女中文字幕| 欧美日韩尤物久久| 久久一区二区精品| 好看不卡的中文字幕| 最新免费av网址| 国产精品无码永久免费888| 男女啊啊啊视频| 精品国产百合女同互慰| 中文字幕伦理免费在线视频 | 国产精品videossex| 国产伦精品一区二区三区| 欧美日韩大片免费观看| 麻豆传媒网站在线观看| 精品中文字幕一区二区| 日韩欧美黄色网址| 亚洲日本中文字幕区| 欧美特级黄色片| 亚洲欧美一区二区精品久久久| jizz视频在线观看| 国产91在线播放| 一区三区在线欧| 精品这里只有精品| a级精品国产片在线观看| 国产在线拍揄自揄拍| 91精品国产一区二区三区| 嫩草在线视频| 91精品啪aⅴ在线观看国产| 欧美gay男男猛男无套| 成人在线视频一区二区三区 | 欧美综合在线观看视频| 久久久美女毛片| 福利网址在线观看| 亚洲午夜精品视频| 国精产品一区二区三区有限公司| 欧美三级华人主播| 日韩高清在线观看| 国产黄色录像视频| 欧美理论片在线| 黄色成人影院| aa成人免费视频| 亚洲黄色精品| 野花社区视频在线观看| 中文字幕在线观看一区二区| 中文字幕在线视频免费| 社区色欧美激情 | 亚洲一区av| 国产一区 在线播放| 不卡视频在线观看| 精品不卡一区二区| 最新69国产成人精品视频免费| 91成人app| 黄色一级片黄色| 久久综合五月天婷婷伊人| 中文字幕一区二区三区四区视频| 精品国产欧美一区二区三区成人 | 老妇喷水一区二区三区| 99re6热在线精品视频| 日韩三级在线观看| 中文字幕在线视频久| 亚洲人一区二区| 国产毛片一区| 永久免费毛片在线观看| 欧美一区二区三区爱爱| 成人一级福利| 亚洲自拍三区| 不卡视频在线看| 亚洲天堂视频网| 欧美精品国产精品日韩精品| 久久99久久人婷婷精品综合| 1024av视频| 中文字幕在线一区二区三区| 免费a视频在线观看| 草民午夜欧美限制a级福利片| 97品白浆高清久久久久久| 五月婷婷狠狠操| 久久久www成人免费无遮挡大片 | 亚洲国产成人av在线| 亚州一区二区三区|