1.Hystrix客戶端
創(chuàng)新互聯(lián)建站專注于七星關(guān)區(qū)網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供七星關(guān)區(qū)營銷型網(wǎng)站建設(shè),七星關(guān)區(qū)網(wǎng)站制作、七星關(guān)區(qū)網(wǎng)頁設(shè)計、七星關(guān)區(qū)網(wǎng)站官網(wǎng)定制、微信小程序服務(wù),打造七星關(guān)區(qū)網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供七星關(guān)區(qū)網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
Netflix已經(jīng)創(chuàng)建了一個名為Hystrix的庫,實現(xiàn)了斷路器的模式。在microservice架構(gòu)通常有多個層的服務(wù)調(diào)用。
低水平的服務(wù)的服務(wù)失敗會導(dǎo)致級聯(lián)故障一直給到用戶。當調(diào)用一個特定的服務(wù)達到一定閾值(默認5秒失敗20次),打開斷路器。在錯誤的情況下和一個開啟的斷路回滾應(yīng)可以由開發(fā)人員提供。
有一個斷路器阻止級聯(lián)失敗并且允許關(guān)閉服務(wù)一段時間進行愈合。回滾會被其他hystrix保護調(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 庫提供,叫做javanica。spring cloud自動包裝Spring bean與注釋的代理連接到Hystrix斷路器。斷路器計算何時打開和關(guān)閉斷路,并在失敗的情況下做什么。
配置@HystrixCommand可以使用commandProperties屬性的列表@HystrixProperty注釋。詳細請看https://github.com/Netflix/Hystrix/tree/master/hystrix-contrib/hystrix-javanica#configuration
https://github.com/Netflix/Hystrix/wiki/Configuration
1.1 傳播安全上下文或者使用spring范圍
如果你想要一些線程本地上下文傳播到@HystrixCommand默認聲明將不會工作,因為它執(zhí)行線程池中的命令(在超時的情況下)。
可以切換Hystrix使用一些配置用相同的線程調(diào)用者,或直接在注釋,讓它使用不同的“隔離策略”(Isolation Strategy)。
例如:
@HystrixCommand(fallbackMethod = "stubMyService", commandProperties = { @HystrixProperty(name="execution.isolation.strategy", value="SEMAPHORE") } ) ...
詳細內(nèi)容請參考https://github.com/Netflix/Hystrix/wiki/Configuration
1.2 健康監(jiān)控
連接的斷路器的狀態(tài)也暴露在調(diào)用應(yīng)用程序的/health端點。
{ "hystrix": { "openCircuitBreakers": [ "StoreIntegration::getStoresByLocationLink" ], "status": "CIRCUIT_OPEN" }, "status": "UP" }
1.3 Hystrix Metrics Stream(hystrix指標流)
spring-boot-starter-actuator中實現(xiàn)了Hystrix metrics stream。暴露/hystrix.stream作為一個管理端點。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
2.Hystrix dashboard
Hystrix的主要好處之一是它收集關(guān)于每個HystrixCommand組指標。Hystrix儀表板顯示每個斷路器的健康高效的方式。
運行Hystrix儀表板需要在spring boot主類上標注@EnableHystrixDashboard。然后訪問/ hystrix查看儀表盤,在hystrix客戶端應(yīng)用使用/hystrix.stream監(jiān)控。
2.1 turbine
看一個實例Hystrix數(shù)據(jù)對于整個系統(tǒng)的健康不是很有用。turbine是一個應(yīng)用程序,該應(yīng)用程序匯集了所有相關(guān)的/hystrix.stream端點到 /turbine.stream用于Hystrix儀表板。運行turbine使用@EnableTurbine注釋你的主類,使用spring-cloud-starter-turbine這個jar。配置請參考https://github.com/Netflix/Turbine/wiki/Configuration-(1.x)
唯一的區(qū)別是turbine.instanceUrlSuffix不需要端口號前綴,因為這是自動處理,除非turbine.instanceInsertPort = false。
turbine.appConfig配置是一個eureka服務(wù)ID列表,turbine將使用這個配置查詢實例。turbine stream在hystrix dashboard中使用如下的url配置:
http://my.turbine.server:8080/turbine.stream?cluster=,如果集群的名稱是default,集群參數(shù)可以忽略)。這個集群參數(shù)必須和turbine.aggregator.clusterConfig匹配。從eureka返回的值都是大寫的,因此我們希望下面的例子可以工作,如果一個app使用eureka注冊,并且被叫做customers:
turbine: aggregator: clusterConfig: CUSTOMERS appConfig: customers
clusterName可以使用SPEL表達式定義,在turbine.clusterNameExpression。
默認值是appName,意思是eureka服務(wù)ID最終將作為集群的key,例如customers的InstanceInfo有一個CUSTOMERS的appName。另外一個例子是turbine.clusterNameExpression=aSGName,將從AWS ASG name獲取集群名稱。
另一個例子:
turbine: aggregator: clusterConfig: SYSTEM,USER appConfig: customers,stores,ui,admin clusterNameExpression: metadata['cluster']
在這種情況下,集群名稱從4個服務(wù)從其元數(shù)據(jù)映射,期望包含“SYSTEM”和“USER”。
所有的app使用default,你需要一個文字表達式(使用單引號):
turbine: appConfig: customers,stores clusterNameExpression: 'default'
spring cloud提供一個spring-cloud-starter-turbine,所有依賴項你需要運行一個turbine服務(wù)器。使用@EnableTurbine創(chuàng)建一個spring boot應(yīng)用。
2.2 turbine AMQP
在某些環(huán)境中(如在PaaS),典型的turbine模型的指標從所有分布式Hystrix命令不起作用。在這種情況下,你可能想要你Hystrix命令推動指標turbine,和spring cloud,就要使用AMQP消息傳遞。所有您需要做的是在客戶端添加一個依賴spring-cloud-netflix-hystrix-amqp并確保代rabbitmq可用。(有關(guān)詳細信息,請參閱彈簧引導(dǎo)文檔如何配置客戶端憑據(jù),但它應(yīng)該工作的當?shù)卮砘蛟朴嬎?。
hystrix相關(guān)的其他文章:
hystrix緩存功能的使用:https://www.jb51.net/article/145855.htm
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
網(wǎng)站題目:springcloudHystrix斷路器的使用(熔斷器)
轉(zhuǎn)載來于:http://bm7419.com/article10/jjepgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、云服務(wù)器、做網(wǎng)站、營銷型網(wǎng)站建設(shè)、網(wǎng)站排名、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)