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