W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Hystrix是Netflix的一個(gè)庫,它實(shí)現(xiàn)了斷路器模式。Hystrix
GatewayFilter允許您將斷路器引入網(wǎng)關(guān)路由,保護(hù)服務(wù)免受級聯(lián)故障的影響,并允許您在下游故障的情況下提供后備響應(yīng)。
要在您的項(xiàng)目中啟用Hystrix
GatewayFilters,請?zhí)砑訉?/font>Spring Cloud Netflix中的 spring-cloud-starter-netflix-hystrix
的依賴。
Hystrix
GatewayFilter工廠需要一個(gè)name
參數(shù),它是HystrixCommand
的名稱。
application.yml。
spring: cloud: gateway: routes: - id: hystrix_route uri: https://example.org filters: - Hystrix=myCommandName
這會(huì)將其余過濾器包裝在命令名稱為myCommandName
的HystrixCommand
中。
Hystrix過濾器還可以接受可選的fallbackUri
參數(shù)。當(dāng)前,僅支持forward:
計(jì)劃的URI。如果調(diào)用了后備,則請求將被轉(zhuǎn)發(fā)到與URI相匹配的控制器。
application.yml。
spring: cloud: gateway: routes: - id: hystrix_route uri: lb://backing-service:8088 predicates: - Path=/consumingserviceendpoint filters: - name: Hystrix args: name: fallbackcmd fallbackUri: forward:/incaseoffailureusethis - RewritePath=/consumingserviceendpoint, /backingserviceendpoint
調(diào)用Hystrix后備廣告時(shí),它將轉(zhuǎn)發(fā)到/incaseoffailureusethis
URI。請注意,此示例還通過目標(biāo)URI上的lb
前綴演示了(可選)Spring Cloud Netflix Ribbon負(fù)載均衡。
主要方案是將fallbackUri
用于網(wǎng)關(guān)應(yīng)用程序中的內(nèi)部控制器或處理程序。但是,也可以將請求重新路由到外部應(yīng)用程序中的控制器或處理程序,如下所示:
application.yml。
spring: cloud: gateway: routes: - id: ingredients uri: lb://ingredients predicates: - Path=//ingredients/** filters: - name: Hystrix args: name: fetchIngredients fallbackUri: forward:/fallback - id: ingredients-fallback uri: http://localhost:9994 predicates: - Path=/fallback
在此示例中,網(wǎng)關(guān)應(yīng)用程序中沒有fallback
端點(diǎn)或處理程序,但是,另一個(gè)應(yīng)用程序中沒有fallback
端點(diǎn)或處理程序,已在http://localhost:9994
下注冊。
如果將請求轉(zhuǎn)發(fā)到后備,則Hystrix網(wǎng)關(guān)過濾器還會(huì)提供引起請求的Throwable
。它作為ServerWebExchangeUtils.HYSTRIX_EXECUTION_EXCEPTION_ATTR
屬性添加到ServerWebExchange
中,可以在網(wǎng)關(guān)應(yīng)用程序中處理后備時(shí)使用。
對于外部控制器/處理程序方案,可以添加帶有異常詳細(xì)信息的標(biāo)頭。您可以在FallbackHeaders GatewayFilter Factory部分中找到有關(guān)它的更多信息。
Hystrix設(shè)置(例如超時(shí))可以使用全局默認(rèn)值進(jìn)行配置,也可以使用Hystrix Wiki中所述的應(yīng)用程序?qū)傩栽谥饤l路由的基礎(chǔ)上進(jìn)行配置。
要為上述示例路由設(shè)置5秒超時(shí),將使用以下配置:
application.yml。
hystrix.command.fallbackcmd.execution.isolation.thread.timeoutInMilliseconds: 5000
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: