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