欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解spring cloud分布式關(guān)于熔斷器

 更新時(shí)間:2018年08月07日 16:41:06   作者:it飛  
這篇文章主要介紹了詳解spring cloud分布式關(guān)于熔斷器,詳細(xì)的介紹了什么是熔斷器和使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

spring cloud分布式中,熔斷器就是斷路器,其實(shí)都是一個(gè)意思。

為什么要使用熔斷器呢?

在分布式中,我們會(huì)根據(jù)業(yè)務(wù)或功能將項(xiàng)目拆分為多個(gè)服務(wù)單元,各個(gè)服務(wù)單元之間通過(guò)服務(wù)注冊(cè)和訂閱的方式相互依賴和調(diào)用功能,隨著項(xiàng)目和業(yè)務(wù)的不斷拓展,服務(wù)單元數(shù)量也逐漸增多,相互之間的依賴關(guān)系也越來(lái)越復(fù)雜,這時(shí)候,可能會(huì)某個(gè)服務(wù)單元出現(xiàn)問(wèn)題或網(wǎng)絡(luò)原因依賴調(diào)用出錯(cuò)或延遲,此時(shí)如果調(diào)用該依賴的請(qǐng)求不斷增加,那么要調(diào)用該服務(wù)的服務(wù)將都會(huì)等待或者出現(xiàn)故障,如果后續(xù)連鎖反應(yīng)越來(lái)越多,Servlet容器的線程資源會(huì)被消耗完畢,導(dǎo)致服務(wù)癱瘓。服務(wù)與服務(wù)的依賴會(huì)導(dǎo)致服務(wù)之間的故障傳播,從而迎來(lái)“雪崩效應(yīng)“。為了解決這種每個(gè)點(diǎn)或多個(gè)點(diǎn)的故障,就有了熔斷器的出現(xiàn)。

什么是熔斷器?

熔斷器就相當(dāng)于電路中的保險(xiǎn)絲、保護(hù)器,它可以實(shí)現(xiàn)快速失敗,如果它在某一段時(shí)間里偵測(cè)到許多類似的錯(cuò)誤,它將不再訪問(wèn)遠(yuǎn)程服務(wù)器,會(huì)強(qiáng)迫以后的訪問(wèn)都會(huì)快速失敗,從而防止某個(gè)服務(wù)不斷地嘗試執(zhí)行可能會(huì)失敗的操作,它會(huì)使服務(wù)繼續(xù)執(zhí)行而不用等待修正錯(cuò)誤,或者浪費(fèi)CPU時(shí)間去等到長(zhǎng)時(shí)間的超時(shí)產(chǎn)生,從而進(jìn)入回路方法。熔斷器也可以使服務(wù)能夠診斷錯(cuò)誤是否已經(jīng)修正,如果已經(jīng)修正,服務(wù)會(huì)再次嘗試調(diào)用操作。

1.在調(diào)用服務(wù)方加入熔斷器依賴jar包:

 // https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-hystrix
  compile group: 'org.springframework.cloud', name: 'spring-cloud-starter-hystrix'

2.在Controller中:

@Controller
//@EnableWebSecurity 安全檢查controller還要繼承extends WebSecurityConfigurerAdapter
public class PageController  {

  public static Logger logger=LoggerFactory.getLogger(PageController.class);

  @Autowired
  private RestTemplate restTemplate;


  @HystrixCommand(fallbackMethod = "toIndex1")//斷路器進(jìn)入回路方法
  @RequestMapping("/toIndex1")
  public String toIndex(Model model){

    System.out.println("進(jìn)入toIndex");
    logger.info("執(zhí)行調(diào)用");
    String msg=restTemplate.getForEntity("http://project-solr/SolrSearch",String.class).getBody();//project-solr是調(diào)用注冊(cè)中心里的名字
    logger.info("調(diào)用結(jié)束");
    model.addAttribute("msg",msg);
    return "index";
  }

  public String toIndex1(Model model){
    System.out.println("進(jìn)入回路方法");
    model.addAttribute("msg","服務(wù)不可用,請(qǐng)稍后重試");
    return "index";
  }
}

注意:在調(diào)用方服務(wù)Controller中的方法上加上@HystrixCommand(fallbackMethod = "回路方法")

這里我讓回路方法調(diào)用的是toIndex1,要注意回路方法返回值,參數(shù)要與原方法一致

在被調(diào)用方的方法中制造故障:

3.在調(diào)用方的啟動(dòng)類加注解@EnableCircuitBreaker啟動(dòng)熔斷器

啟動(dòng):

可以看到進(jìn)入了回路方法

當(dāng)然還可以在調(diào)用方進(jìn)行配置:

hystrix:
 command:
  default:
   execution:
   isolation:
    thread:
     timeoutInMilliseconds: 2000 #請(qǐng)求響應(yīng)時(shí)間 如果過(guò)了這個(gè)時(shí)間就會(huì)進(jìn)入回路方法
   circuitBreaker:
     requestVolumeThreshold: 2 # 服務(wù)降級(jí):此請(qǐng)求連續(xù)多少次響應(yīng)過(guò)慢或崩潰 系統(tǒng)就默認(rèn)把它當(dāng)成一個(gè)崩潰的方法 在一定時(shí)間內(nèi)調(diào)用此方法會(huì)直接進(jìn)入回路方法 這樣執(zhí)行更快 默認(rèn)值是20 請(qǐng)求該方法20次 如果崩潰或響應(yīng)過(guò)慢率大于百分之八十 就會(huì)默認(rèn)它是一個(gè)崩潰方法 
      #timeout:
        #enabled: false #取消超時(shí)檢查 無(wú)論線程運(yùn)行多久 只要不崩潰就不進(jìn)入回路方法 一般情況不使用

配置完后運(yùn)行:

運(yùn)行好幾次發(fā)現(xiàn)它會(huì)前兩次會(huì)訪問(wèn)并等待相應(yīng)結(jié)果,后面不再訪問(wèn)就直接回應(yīng)結(jié)果進(jìn)入回路方法

當(dāng)然這是根據(jù)配置:

spring cloud熔斷器就說(shuō)到這里,想了解spring cloud其他內(nèi)容,請(qǐng)瀏覽我以前博客

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • maven插件maven-jar-plugin構(gòu)建jar文件的詳細(xì)使用

    maven插件maven-jar-plugin構(gòu)建jar文件的詳細(xì)使用

    maven-jar-plugin插件時(shí)maven中最常用的插件,也是maven構(gòu)建Java程序執(zhí)行包或者依賴包的默認(rèn)插件,本文主要介紹了maven插件maven-jar-plugin構(gòu)建jar文件的詳細(xì)使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • IntelliJ?IDEA?2022安裝注冊(cè)永久激活

    IntelliJ?IDEA?2022安裝注冊(cè)永久激活

    java開發(fā)工具IntelliJ?IDEA深受用戶喜愛(ài),很多朋友對(duì)這個(gè)idea開發(fā)工具比較忠心,一旦有新版本發(fā)出,很多小伙伴就迫不及待的想更新,今天小編給大家?guī)?lái)了idea2022.1最新永久激活碼,親測(cè)有效,喜歡的朋友快來(lái)下載體驗(yàn)吧
    2022-08-08
  • Java中do-while循環(huán)的使用方法及注意事項(xiàng)詳解

    Java中do-while循環(huán)的使用方法及注意事項(xiàng)詳解

    這篇文章主要介紹了Java中do-while循環(huán)的使用方法及注意事項(xiàng)的相關(guān)資料,在Java編程中,do-while循環(huán)是一種基本的循環(huán)控制結(jié)構(gòu),它至少執(zhí)行一次循環(huán)體,然后根據(jù)條件判斷是否繼續(xù),文中將用法介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • maven下載依賴失敗問(wèn)題及解決

    maven下載依賴失敗問(wèn)題及解決

    這篇文章主要介紹了maven下載依賴失敗問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 關(guān)于Lists.partition集合分組使用以及注意事項(xiàng)

    關(guān)于Lists.partition集合分組使用以及注意事項(xiàng)

    這篇文章主要介紹了關(guān)于Lists.partition集合分組使用以及注意事項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Spring創(chuàng)建Bean的過(guò)程Debug的詳細(xì)流程

    Spring創(chuàng)建Bean的過(guò)程Debug的詳細(xì)流程

    這篇文章主要介紹了Spring創(chuàng)建Bean的過(guò)程Debug的流程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Spring MVC項(xiàng)目中l(wèi)og4J和AOP使用詳解

    Spring MVC項(xiàng)目中l(wèi)og4J和AOP使用詳解

    項(xiàng)目日志記錄是項(xiàng)目開發(fā)、運(yùn)營(yíng)必不可少的內(nèi)容,有了它可以對(duì)系統(tǒng)有整體的把控,出現(xiàn)任何問(wèn)題都有蹤跡可尋。下面這篇文章主要給大家介紹了關(guān)于Spring MVC項(xiàng)目中l(wèi)og4J和AOP使用的相關(guān)資料,需要的朋友可以參考下。
    2017-12-12
  • Java利用iTextPDF庫(kù)實(shí)現(xiàn)制作PDF表格模板并填充數(shù)據(jù)

    Java利用iTextPDF庫(kù)實(shí)現(xiàn)制作PDF表格模板并填充數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了如何通過(guò)Java的iTextPDF庫(kù)制作一個(gè)PDF表格模板并填充數(shù)據(jù),文中的示例代碼講解詳細(xì),感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧
    2023-12-12
  • Java 大小寫最快轉(zhuǎn)換方式實(shí)例代碼

    Java 大小寫最快轉(zhuǎn)換方式實(shí)例代碼

    這篇文章主要介紹了Java 大小寫最快轉(zhuǎn)換方式實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • 徹底了解java中ReentrantLock和AQS的源碼

    徹底了解java中ReentrantLock和AQS的源碼

    這篇文章主要介紹了徹底了解java中ReentrantLock和AQS的源碼,想了解鎖機(jī)制的同學(xué),一定要參考下
    2021-04-04

最新評(píng)論