成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Spring Cloud構(gòu)建微服務(wù)架構(gòu):服務(wù)容錯(cuò)保護(hù)(Hystrix服務(wù)降級(jí))

企業(yè)動(dòng)態(tài)
在Spring Cloud Hystrix中實(shí)現(xiàn)了線程隔離、斷路器等一系列的服務(wù)保護(hù)功能。它也是基于Netflix的開源框架 Hystrix實(shí)現(xiàn)的,該框架目標(biāo)在于通過控制那些訪問遠(yuǎn)程系統(tǒng)、服務(wù)和第三方庫的節(jié)點(diǎn),從而對(duì)延遲和故障提供更強(qiáng)大的容錯(cuò)能力。Hystrix具備了服務(wù)降級(jí)、服務(wù)熔斷、線程隔離、請(qǐng)求緩存、請(qǐng)求合并以及服務(wù)監(jiān)控等強(qiáng)大功能。

[[195587]]

前言

在微服務(wù)架構(gòu)中,我們將系統(tǒng)拆分成了一個(gè)個(gè)的服務(wù)單元,各單元應(yīng)用間通過服務(wù)注冊(cè)與訂閱的方式互相依賴。由于每個(gè)單元都在不同的進(jìn)程中運(yùn)行,依賴通過遠(yuǎn)程調(diào)用的方式執(zhí)行,這樣就有可能因?yàn)榫W(wǎng)絡(luò)原因或是依賴服務(wù)自身問題出現(xiàn)調(diào)用故障或延遲,而這些問題會(huì)直接導(dǎo)致調(diào)用方的對(duì)外服務(wù)也出現(xiàn)延遲,若此時(shí)調(diào)用方的請(qǐng)求不斷增加,***就會(huì)出現(xiàn)因等待出現(xiàn)故障的依賴方響應(yīng)而形成任務(wù)積壓,線程資源無法釋放,最終導(dǎo)致自身服務(wù)的癱瘓,進(jìn)一步甚至出現(xiàn)故障的蔓延最終導(dǎo)致整個(gè)系統(tǒng)的癱瘓。如果這樣的架構(gòu)存在如此嚴(yán)重的隱患,那么相較傳統(tǒng)架構(gòu)就更加的不穩(wěn)定。為了解決這樣的問題,因此產(chǎn)生了斷路器等一系列的服務(wù)保護(hù)機(jī)制。

針對(duì)上述問題,在Spring Cloud Hystrix中實(shí)現(xiàn)了線程隔離、斷路器等一系列的服務(wù)保護(hù)功能。它也是基于Netflix的開源框架 Hystrix實(shí)現(xiàn)的,該框架目標(biāo)在于通過控制那些訪問遠(yuǎn)程系統(tǒng)、服務(wù)和第三方庫的節(jié)點(diǎn),從而對(duì)延遲和故障提供更強(qiáng)大的容錯(cuò)能力。Hystrix具備了服務(wù)降級(jí)、服務(wù)熔斷、線程隔離、請(qǐng)求緩存、請(qǐng)求合并以及服務(wù)監(jiān)控等強(qiáng)大功能。

接下來,我們就從一個(gè)簡單示例開始對(duì)Spring Cloud Hystrix的學(xué)習(xí)與使用。

動(dòng)手試一試

在開始使用Spring Cloud Hystrix實(shí)現(xiàn)斷路器之前,我們先拿之前實(shí)現(xiàn)的一些內(nèi)容作為基礎(chǔ),其中包括:

  • eureka-server工程:服務(wù)注冊(cè)中心,端口:1001
  • eureka-client工程:服務(wù)提供者,兩個(gè)實(shí)例啟動(dòng)端口分別為2001

下面我們可以復(fù)制一下之前實(shí)現(xiàn)的一個(gè)服務(wù)消費(fèi)者:eureka-consumer-ribbon,命名為eureka-consumer-ribbon-hystrix。下面我們開始對(duì)其進(jìn)行改在:

***步:pom.xml的dependencies節(jié)點(diǎn)中引入spring-cloud-starter-hystrix依賴:

  1. <dependency> 
  2.     <groupId>org.springframework.cloud</groupId> 
  3.     <artifactId>spring-cloud-starter-hystrix</artifactId> 
  4. </dependency> 

第二步:在應(yīng)用主類中使用@EnableCircuitBreaker或@EnableHystrix注解開啟Hystrix的使用:

  1. @EnableCircuitBreaker 
  2. @EnableDiscoveryClient 
  3. @SpringBootApplication 
  4. public class Application { 
  5.     @Bean 
  6.     @LoadBalanced 
  7.     public RestTemplate restTemplate() { 
  8.         return new RestTemplate(); 
  9.     } 
  10.     public static void main(String[] args) { 
  11.         new SpringApplicationBuilder(Application.class).web(true).run(args); 
  12.     } 

注意:這里我們還可以使用Spring Cloud應(yīng)用中的@SpringCloudApplication注解來修飾應(yīng)用主類,該注解的具體定義如下所示。我們可以看到該注解中包含了上我們所引用的三個(gè)注解,這也意味著一個(gè)Spring Cloud標(biāo)準(zhǔn)應(yīng)用應(yīng)包含服務(wù)發(fā)現(xiàn)以及斷路器。

  1. @Target({ElementType.TYPE}) 
  2. @Retention(RetentionPolicy.RUNTIME) 
  3. @Documented 
  4. @Inherited 
  5. @SpringBootApplication 
  6. @EnableDiscoveryClient 
  7. @EnableCircuitBreaker 
  8. public @interface SpringCloudApplication { 

第三步:改造服務(wù)消費(fèi)方式,新增ConsumerService類,然后將在Controller中的邏輯遷移過去。***,在為具體執(zhí)行邏輯的函數(shù)上增加@HystrixCommand注解來指定服務(wù)降級(jí)方法,比如:

  1. @RestController 
  2. public class DcController { 
  3.     @Autowired 
  4.     ConsumerService consumerService; 
  5.     @GetMapping("/consumer"
  6.     public String dc() { 
  7.         return consumerService.consumer(); 
  8.     } 
  9.     class ConsumerService { 
  10.         @Autowired 
  11.         RestTemplate restTemplate; 
  12.         @HystrixCommand(fallbackMethod = "fallback"
  13.         public String consumer() { 
  14.             return restTemplate.getForObject("http://eureka-client/dc", String.class); 
  15.         } 
  16.         public String fallback() { 
  17.             return "fallback"
  18.         } 
  19.     } 

下面我們來驗(yàn)證一下上面Hystrix帶來的一些基礎(chǔ)功能。我們先把涉及的服務(wù)都啟動(dòng)起來,然后訪問localhost:2101/consumer,此時(shí)可以獲取正常的返回,比如:Services: [eureka-consumer-ribbon-hystrix, eureka-client]。

為了觸發(fā)服務(wù)降級(jí)邏輯,我們可以將服務(wù)提供者eureka-client的邏輯加一些延遲,比如:

  1. @GetMapping("/dc"
  2. public String dc() throws InterruptedException { 
  3.     Thread.sleep(5000L); 
  4.     String services = "Services: " + discoveryClient.getServices(); 
  5.     System.out.println(services); 
  6.     return services; 

重啟eureka-client之后,再嘗試訪問localhost:2101/consumer,此時(shí)我們將獲得的返回結(jié)果為:fallback。我們從eureka-client的控制臺(tái)中,可以看到服務(wù)提供方輸出了原本要返回的結(jié)果,但是由于返回前延遲了5秒,而服務(wù)消費(fèi)方觸發(fā)了服務(wù)請(qǐng)求超時(shí)異常,服務(wù)消費(fèi)者就通過HystrixCommand注解中指定的降級(jí)邏輯進(jìn)行執(zhí)行,因此該請(qǐng)求的結(jié)果返回了fallback。這樣的機(jī)制,對(duì)自身服務(wù)起到了基礎(chǔ)的保護(hù),同時(shí)還為異常情況提供了自動(dòng)的服務(wù)降級(jí)切換機(jī)制。

更多Spring Cloud內(nèi)容請(qǐng)持續(xù)關(guān)注我的博客更新或在《Spring Cloud微服務(wù)實(shí)戰(zhàn)》中獲取。

代碼示例

樣例工程將沿用之前在碼云和GitHub上創(chuàng)建的SpringCloud-Learning項(xiàng)目,重新做了一下整理。通過不同目錄來區(qū)分Brixton和Dalston的示例。

碼云:點(diǎn)擊查看

GitHub:點(diǎn)擊查看

具體工程說明如下:

  • eureka的服務(wù)注冊(cè)中心:eureka-server
  • eureka的服務(wù)提供方:eureka-client
  • eureka的服務(wù)消費(fèi)者:eureka-consumer-ribbon-hystrix

【本文為51CTO專欄作者“翟永超”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過51CTO聯(lián)系作者獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2017-07-04 17:35:46

微服務(wù)架構(gòu)Spring Clou

2017-06-26 09:06:10

Spring Clou微服務(wù)架構(gòu)

2017-09-04 16:15:44

服務(wù)網(wǎng)關(guān)架構(gòu)

2017-08-10 11:15:05

Spring Clou微服務(wù)架構(gòu)

2017-08-09 15:50:47

Spring Clou微服務(wù)架構(gòu)

2021-03-16 08:31:59

微服務(wù)Sentinel雪崩效應(yīng)

2017-06-25 13:33:25

Spring Clou微服務(wù)架構(gòu)

2018-03-02 16:11:29

Spring Clou分布式服務(wù)跟蹤

2017-12-20 15:37:39

Spring Clou微服務(wù)架構(gòu)

2018-08-01 14:20:11

微服務(wù)架構(gòu)人工智能

2018-04-16 14:56:56

微服務(wù)架構(gòu)分布式服務(wù)

2018-04-18 16:07:49

Spring Clou微服務(wù)分布式

2017-09-09 23:15:20

Spring Clou微服務(wù)架構(gòu)路由

2018-03-13 16:42:26

分布式服務(wù)跟蹤

2018-04-09 13:56:13

微服務(wù)架構(gòu)分布式

2018-04-02 15:01:31

微服務(wù)架構(gòu)分布式服務(wù)

2018-07-09 09:27:10

Spring Clou微服務(wù)架構(gòu)

2021-10-19 14:02:12

服務(wù)器SpringSecurity

2017-09-15 23:29:53

Spring Clou微服務(wù)架構(gòu)過濾器

2017-07-28 16:41:53

Spring Clou微服務(wù)架構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲欧美在线观看 | 欧美久久视频 | 精产国产伦理一二三区 | 欧美精品在线免费观看 | 日日骚网| 男人天堂国产 | 国产精品永久在线观看 | 国产第一区二区 | 一级网站 | 国产精品久久久久久久久久久久 | 久久亚洲国产精品 | 久久久久国产精品 | 久久久久久精 | 天天操天天干天天爽 | 国产精品久久久久久亚洲调教 | 国产乱码精品一品二品 | 99视频在线免费观看 | 亚洲一区二区三区免费在线观看 | 成人在线免费网站 | 日韩av免费看| 久久三区| 久久成人国产精品 | 999视频在线播放 | 亚洲高清视频在线观看 | 伊人色综合久久天天五月婷 | 狼色网 | 久久av综合 | 在线成人福利 | 亚洲乱码一区二区三区在线观看 | 久久久91| 久久www免费视频 | 欧美成人手机视频 | 伊人手机在线视频 | 久久夜夜 | 国产精品国产三级国产aⅴ原创 | 中文字幕亚洲免费 | 国产999精品久久久久久绿帽 | 人人干视频在线 | 国产网站在线播放 | 亚洲精品一区国语对白 | 一级a性色生活片久久毛片 午夜精品在线观看 |