摘要:以下示例顯示了具有斷路器的最小服務(wù)器由名為的庫提供,在連接到斷路器的代理中自動包裝帶有該注解的,斷路器計算何時打開和關(guān)閉電路以及在發(fā)生故障時應(yīng)采取的措施。上一篇服務(wù)發(fā)現(xiàn)下一篇超時和客戶端
斷路器:Hystrix客戶端
Netflix創(chuàng)建了一個名為Hystrix的庫,用于實(shí)現(xiàn)斷路器模式,在微服務(wù)架構(gòu)中,通常有多層服務(wù)調(diào)用,如以下示例所示:
較低級別的服務(wù)中的服務(wù)故障可能導(dǎo)致級聯(lián)故障一直到用戶,當(dāng)對特定服務(wù)的調(diào)用超過circuitBreaker.requestVolumeThreshold(默認(rèn)值:20個請求)并且在metrics.rollingStats.timeInMilliseconds(默認(rèn)值:10秒)定義的滾動窗口中,失敗百分比大于circuitBreaker.errorThresholdPercentage(默認(rèn)值:> 50%)時,電路打開,沒有調(diào)用,在出現(xiàn)錯誤和開路的情況下,開發(fā)人員可以提供回退。
擁有一個開放的電路可以停止級聯(lián)故障,并允許過載或故障服務(wù)有時間恢復(fù),回退可以是另一個受Hystrix保護(hù)的調(diào)用、靜態(tài)數(shù)據(jù)或合理的空值,回退可以被鏈接,以便第一個回退執(zhí)行一些其他業(yè)務(wù)調(diào)用,而這些業(yè)務(wù)調(diào)用又反過來回退到靜態(tài)數(shù)據(jù)。
如何包含Hystrix要在項(xiàng)目中包含Hystrix,請使用組ID為org.springframework.cloud和工件ID為spring-cloud-starter-netflix-hystrix的啟動器。
以下示例顯示了具有Hystrix斷路器的最小Eureka服務(wù)器:
@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(Mapparameters) { //do stuff that might fail } public Object defaultStores(Map parameters) { return /* something useful */; } }
@HystrixCommand由名為“javanica”的Netflix contrib庫提供,Spring Cloud在連接到Hystrix斷路器的代理中自動包裝帶有該注解的Spring bean,斷路器計算何時打開和關(guān)閉電路以及在發(fā)生故障時應(yīng)采取的措施。
要配置@HystrixCommand,可以將commandProperties屬性與@HystrixProperty注解列表一起使用,有關(guān)詳細(xì)信息,請參見此處,有關(guān)可用屬性的詳細(xì)信息,請參閱Hystrix wiki。
傳播安全上下文或使用Spring Scopes如果希望某些線程本地上下文傳播到@HystrixCommand,則默認(rèn)聲明不起作用,因?yàn)樗诰€程池中執(zhí)行該命令(在超時的情況下),你可以通過配置或直接在注解中切換Hystrix以使用與調(diào)用者相同的線程,方法是讓它使用不同的“隔離策略”,以下示例演示如何在注解中設(shè)置線程:
@HystrixCommand(fallbackMethod = "stubMyService", commandProperties = { @HystrixProperty(name="execution.isolation.strategy", value="SEMAPHORE") } ) ...
如果你使用@SessionScope或@RequestScope,則同樣適用,如果遇到運(yùn)行時異常,表示無法找到作用域上下文,則需要使用相同的線程。
你還可以選擇將hystrix.shareSecurityContext屬性設(shè)置為true,這樣做會自動配置Hystrix并發(fā)策略插件掛鉤,將SecurityContext從主線程傳輸?shù)紿ystrix命令使用的線程。Hystrix不會注冊多個Hystrix并發(fā)策略,因此可以通過將自己的HystrixConcurrencyStrategy聲明為Spring bean來實(shí)現(xiàn)擴(kuò)展機(jī)制,Spring Cloud在Spring上下文中查找你的實(shí)現(xiàn),并將其包裝在自己的插件中。
健康指示器連接斷路器的狀態(tài)也暴露在調(diào)用應(yīng)用程序的/health端點(diǎn)中,如以下示例所示:
{ "hystrix": { "openCircuitBreakers": [ "StoreIntegration::getStoresByLocationLink" ], "status": "CIRCUIT_OPEN" }, "status": "UP" }Hystrix指標(biāo)流
要啟用Hystrix指標(biāo)流,請包含對spring-boot-starter-actuator的依賴關(guān)系并設(shè)置management.endpoints.web.exposure.include: hystrix.stream,這樣做會將/actuator/hystrix.stream公開為管理端點(diǎn),如以下示例所示:
Hystrix儀表板org.springframework.boot spring-boot-starter-actuator
Hystrix的主要好處之一是它收集了關(guān)于每個HystrixCommand的指標(biāo)集,Hystrix儀表板以高效的方式顯示每個斷路器的健康狀況。
上一篇:服務(wù)發(fā)現(xiàn):Eureka Server 下一篇:Hystrix超時和Ribbon客戶端文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/74144.html
摘要:要運(yùn)行儀表板,請使用注解主類,然后訪問并將儀表板指向客戶端應(yīng)用程序中的單個實(shí)例的端點(diǎn)。連接到使用的端點(diǎn)時,必須信任服務(wù)器使用的證書,如果證書不受信任,則必須將證書導(dǎo)入,以便儀表板成功連接到流端點(diǎn)。 Hystrix超時和Ribbon客戶端 使用包裝Ribbon客戶端的Hystrix命令時,要確保將Hystrix超時配置為長于配置的Ribbon超時,包括可能進(jìn)行的任何可能的重試,例如,如果...
摘要:在該配置中,加入這個方法的話,表明使用了該配置的地方,就會禁用該模塊使用容災(zāi)降級的功能添加訪問層添加電影微服務(wù)啟動類電影微服務(wù),定制,一個功能禁用,另一個功能啟用。 SpringCloud(第 016 篇)電影微服務(wù),定制Feign,一個Feign功能禁用Hystrix,另一個Feign功能啟用Hystrix - 一、大致介紹 1、在一些場景中,部分功能需要使用斷路器功能,部分功能不需...
摘要:繼承支持通過單繼承接口支持樣板,這允許將通用操作分組為方便的基本接口。,記錄基本信息以及請求和響應(yīng)。例如,類定義參數(shù)和以下客戶端使用注解使用類 聲明式REST客戶端:Feign Feign是一個聲明式的Web服務(wù)客戶端,它使編寫Web服務(wù)客戶端變得更容易,要使用Feign,請創(chuàng)建一個接口并對其進(jìn)行注解,它具有可插拔的注解支持,包括Feign注解和JAX-RS注解,F(xiàn)eign還支持可插拔...
摘要:多層服務(wù)調(diào)用常見于微服務(wù)架構(gòu)中較底層的服務(wù)如果出現(xiàn)故障,會導(dǎo)致連鎖故障。 Spring Cloud 體驗(yàn) 簡介 Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)的一些工具,包括配置管理、服務(wù)發(fā)現(xiàn)、斷路器、路由、微代理、 事件總線、全局鎖、決策競選、分布式會話等等 基于Spring Boot,Spring Cloud將各公司成熟服務(wù)框架組合起來,通過Spring Boo...
摘要:斷路器本身是一種開關(guān)裝置,用于在電路上保護(hù)線路過載,當(dāng)線路中有電器發(fā)生短路時,斷路器能夠及時的切斷故障電路,防止發(fā)生過載發(fā)熱甚至起火等嚴(yán)重后果。具備擁有回退機(jī)制和斷路器功能的線程和信號隔離,請求緩存和請求打包,以及監(jiān)控和配置等功能。 轉(zhuǎn)載請注明出處 http://www.paraller.com 代碼機(jī)制:熔斷 & Fallback & 資源隔離 熔斷 概念: 在微服務(wù)架構(gòu)中,我們將系...
閱讀 3414·2021-10-08 10:15
閱讀 5628·2021-09-23 11:56
閱讀 1479·2019-08-30 15:55
閱讀 457·2019-08-29 16:05
閱讀 2739·2019-08-29 12:34
閱讀 2052·2019-08-29 12:18
閱讀 925·2019-08-26 12:02
閱讀 1661·2019-08-26 12:00