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

spring cloud Hystrix斷路器的使用(熔斷器)

 更新時(shí)間:2018年08月18日 10:28:30   作者:TS笑天  
這篇文章主要介紹了spring cloud Hystrix斷路器的使用(熔斷器),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

1.Hystrix客戶端

Netflix已經(jīng)創(chuàng)建了一個(gè)名為Hystrix的庫(kù),實(shí)現(xiàn)了斷路器的模式。在microservice架構(gòu)通常有多個(gè)層的服務(wù)調(diào)用。

這里寫(xiě)圖片描述

低水平的服務(wù)的服務(wù)失敗會(huì)導(dǎo)致級(jí)聯(lián)故障一直給到用戶。當(dāng)調(diào)用一個(gè)特定的服務(wù)達(dá)到一定閾值(默認(rèn)5秒失敗20次),打開(kāi)斷路器。在錯(cuò)誤的情況下和一個(gè)開(kāi)啟的斷路回滾應(yīng)可以由開(kāi)發(fā)人員提供。

這里寫(xiě)圖片描述

有一個(gè)斷路器阻止級(jí)聯(lián)失敗并且允許關(guān)閉服務(wù)一段時(shí)間進(jìn)行愈合?;貪L會(huì)被其他hystrix保護(hù)調(diào)用,靜態(tài)數(shù)據(jù)或健全的空值。
代碼如下:

@SpringBootApplication
@EnableCircuitBreaker
public class Application {

  public static void main(String[] args) {
    new SpringApplicationBuilder(Application.class).web(true).run(args);
  }

}
@Component
public class StoreIntegration {

  @HystrixCommand(fallbackMethod = "defaultStores")
  public Object getStores(Map<String, Object> parameters) {
    //do stuff that might fail
  }

  public Object defaultStores(Map<String, Object> parameters) {
    return /* something useful */;
  }
}

@HystrixCommand是由Netflix contrib 庫(kù)提供,叫做javanica。spring cloud自動(dòng)包裝Spring bean與注釋的代理連接到Hystrix斷路器。斷路器計(jì)算何時(shí)打開(kāi)和關(guān)閉斷路,并在失敗的情況下做什么。

配置@HystrixCommand可以使用commandProperties屬性的列表@HystrixProperty注釋。詳細(xì)請(qǐng)看https://github.com/Netflix/Hystrix/tree/master/hystrix-contrib/hystrix-javanica#configuration
https://github.com/Netflix/Hystrix/wiki/Configuration

1.1 傳播安全上下文或者使用spring范圍

如果你想要一些線程本地上下文傳播到@HystrixCommand默認(rèn)聲明將不會(huì)工作,因?yàn)樗鼒?zhí)行線程池中的命令(在超時(shí)的情況下)。

可以切換Hystrix使用一些配置用相同的線程調(diào)用者,或直接在注釋,讓它使用不同的“隔離策略”(Isolation Strategy)。

例如:

@HystrixCommand(fallbackMethod = "stubMyService",
  commandProperties = {
   @HystrixProperty(name="execution.isolation.strategy", value="SEMAPHORE")
  }
)
...

詳細(xì)內(nèi)容請(qǐng)參考https://github.com/Netflix/Hystrix/wiki/Configuration

1.2 健康監(jiān)控

連接的斷路器的狀態(tài)也暴露在調(diào)用應(yīng)用程序的/health端點(diǎn)。

{
  "hystrix": {
    "openCircuitBreakers": [
      "StoreIntegration::getStoresByLocationLink"
    ],
    "status": "CIRCUIT_OPEN"
  },
  "status": "UP"
}

1.3 Hystrix Metrics Stream(hystrix指標(biāo)流)

spring-boot-starter-actuator中實(shí)現(xiàn)了Hystrix metrics stream。暴露/hystrix.stream作為一個(gè)管理端點(diǎn)。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
  </dependency>

2.Hystrix dashboard

Hystrix的主要好處之一是它收集關(guān)于每個(gè)HystrixCommand組指標(biāo)。Hystrix儀表板顯示每個(gè)斷路器的健康高效的方式。

這里寫(xiě)圖片描述 

運(yùn)行Hystrix儀表板需要在spring boot主類(lèi)上標(biāo)注@EnableHystrixDashboard。然后訪問(wèn)/ hystrix查看儀表盤(pán),在hystrix客戶端應(yīng)用使用/hystrix.stream監(jiān)控。

2.1 turbine

看一個(gè)實(shí)例Hystrix數(shù)據(jù)對(duì)于整個(gè)系統(tǒng)的健康不是很有用。turbine是一個(gè)應(yīng)用程序,該應(yīng)用程序匯集了所有相關(guān)的/hystrix.stream端點(diǎn)到 /turbine.stream用于Hystrix儀表板。運(yùn)行turbine使用@EnableTurbine注釋你的主類(lèi),使用spring-cloud-starter-turbine這個(gè)jar。配置請(qǐng)參考https://github.com/Netflix/Turbine/wiki/Configuration-(1.x)

唯一的區(qū)別是turbine.instanceUrlSuffix不需要端口號(hào)前綴,因?yàn)檫@是自動(dòng)處理,除非turbine.instanceInsertPort = false。

turbine.appConfig配置是一個(gè)eureka服務(wù)ID列表,turbine將使用這個(gè)配置查詢實(shí)例。turbine stream在hystrix dashboard中使用如下的url配置:

http://my.turbine.server:8080/turbine.stream?cluster=,如果集群的名稱是default,集群參數(shù)可以忽略)。這個(gè)集群參數(shù)必須和turbine.aggregator.clusterConfig匹配。從eureka返回的值都是大寫(xiě)的,因此我們希望下面的例子可以工作,如果一個(gè)app使用eureka注冊(cè),并且被叫做customers:

turbine:
 aggregator:
  clusterConfig: CUSTOMERS
 appConfig: customers

clusterName可以使用SPEL表達(dá)式定義,在turbine.clusterNameExpression。

默認(rèn)值是appName,意思是eureka服務(wù)ID最終將作為集群的key,例如customers的InstanceInfo有一個(gè)CUSTOMERS的appName。另外一個(gè)例子是turbine.clusterNameExpression=aSGName,將從AWS ASG name獲取集群名稱。

另一個(gè)例子:

turbine:
 aggregator:
  clusterConfig: SYSTEM,USER
 appConfig: customers,stores,ui,admin
 clusterNameExpression: metadata['cluster']

在這種情況下,集群名稱從4個(gè)服務(wù)從其元數(shù)據(jù)映射,期望包含“SYSTEM”和“USER”。

所有的app使用default,你需要一個(gè)文字表達(dá)式(使用單引號(hào)):

turbine:
 appConfig: customers,stores
 clusterNameExpression: 'default'

spring cloud提供一個(gè)spring-cloud-starter-turbine,所有依賴項(xiàng)你需要運(yùn)行一個(gè)turbine服務(wù)器。使用@EnableTurbine創(chuàng)建一個(gè)spring boot應(yīng)用。

2.2 turbine AMQP

在某些環(huán)境中(如在PaaS),典型的turbine模型的指標(biāo)從所有分布式Hystrix命令不起作用。在這種情況下,你可能想要你Hystrix命令推動(dòng)指標(biāo)turbine,和spring cloud,就要使用AMQP消息傳遞。所有您需要做的是在客戶端添加一個(gè)依賴spring-cloud-netflix-hystrix-amqp并確保代rabbitmq可用。(有關(guān)詳細(xì)信息,請(qǐng)參閱彈簧引導(dǎo)文檔如何配置客戶端憑據(jù),但它應(yīng)該工作的當(dāng)?shù)卮砘蛟朴?jì)算)。

hystrix相關(guān)的其他文章:

hystrix緩存功能的使用:http://www.dbjr.com.cn/article/145855.htm

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

相關(guān)文章

  • 使用Spring AOP實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)讀寫(xiě)分離案例分析(附demo)

    使用Spring AOP實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)讀寫(xiě)分離案例分析(附demo)

    分布式環(huán)境下數(shù)據(jù)庫(kù)的讀寫(xiě)分離策略是解決數(shù)據(jù)庫(kù)讀寫(xiě)性能瓶頸的一個(gè)關(guān)鍵解決方案,這篇文章主要介紹了使用Spring AOP實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)讀寫(xiě)分離案例分析(附demo),有興趣的可以了解一下。
    2017-01-01
  • SpringCloudStream中的消息分區(qū)數(shù)詳解

    SpringCloudStream中的消息分區(qū)數(shù)詳解

    這篇文章主要介紹了SpringCloudStream中的消息分區(qū)數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 使用注解@Validated效驗(yàn)VO參數(shù)是否合規(guī)

    使用注解@Validated效驗(yàn)VO參數(shù)是否合規(guī)

    這篇文章主要為大家介紹了使用注解@Validated效驗(yàn)VO參數(shù)是否合規(guī)過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Java設(shè)計(jì)模式之適配器模式的示例詳解

    Java設(shè)計(jì)模式之適配器模式的示例詳解

    適配器模式,即將某個(gè)類(lèi)的接口轉(zhuǎn)換成客戶端期望的另一個(gè)接口的表示,主要目的是實(shí)現(xiàn)兼容性,讓原本因?yàn)榻涌诓黄ヅ?,沒(méi)辦法一起工作的兩個(gè)類(lèi),可以協(xié)同工作。本文將通過(guò)示例詳細(xì)介紹適配器模式,需要的可以參考一下
    2022-08-08
  • 解析電子郵件的基本概念及JavaMail API郵件功能使用

    解析電子郵件的基本概念及JavaMail API郵件功能使用

    這篇文章主要介紹了電子郵件的基本概念及JavaMail API郵件功能使用,包括用Java來(lái)發(fā)送郵件的示例,需要的朋友可以參考下
    2016-02-02
  • 關(guān)于request.getRequestDispatcher().forward()的妙用及DispatcherType對(duì)Filter配置的影響

    關(guān)于request.getRequestDispatcher().forward()的妙用及DispatcherType

    這篇文章主要介紹了關(guān)于request.getRequestDispatcher().forward()的妙用及DispatcherType對(duì)Filter配置的影響,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • mybatis插入數(shù)據(jù)不返回主鍵id的可能原因及解決方式

    mybatis插入數(shù)據(jù)不返回主鍵id的可能原因及解決方式

    這篇文章主要介紹了mybatis插入數(shù)據(jù)不返回主鍵id的可能原因及解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Java正確實(shí)現(xiàn)一個(gè)單例設(shè)計(jì)模式的示例

    Java正確實(shí)現(xiàn)一個(gè)單例設(shè)計(jì)模式的示例

    今天小編就為大家分享一篇關(guān)于Java正確實(shí)現(xiàn)一個(gè)單例設(shè)計(jì)模式的示例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • java生成jar包的方法

    java生成jar包的方法

    這篇文章主要介紹了java生成jar包的方法,對(duì)Java生成jar包的具體步驟及方法進(jìn)行了較為詳細(xì)的描述,是非常實(shí)用的技巧,需要的朋友可以參考下
    2014-09-09
  • logback打印多次mybatis的sql日志問(wèn)題

    logback打印多次mybatis的sql日志問(wèn)題

    這篇文章主要介紹了logback打印多次mybatis的sql日志問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09

最新評(píng)論