[英]How to enable Hystrix circuit breaker at zuul?
在我的應用程序中,我們使用的是springboot microservices,具有eureka注冊表,zuul api網關,這里假設我有2個Payment-Service實例,當ul的一個節點時,zuul使用功能區將/ payment端點負載均衡到Payment-service。付款服務沒有響應,並且仍在eureka上注冊。 在這里,我們在Zuul apigateway上配置了hystrix斷路器,但是對於沒有響應的節點,hystrix斷路器並未打開。
Zuul 為每個路由 (serviceId)創建一個Hystrix斷路器 。 這意味着您的所有付款服務實例之間將共享 一個 Hystrix斷路器。
Zuul為每個路由創建的斷路器不是要從路由列表中刪除不正常的實例 。 僅僅是為了防止Zuul的故障,這種故障可能是由一種服務故障引起的。
假設您正在使用Hystrix的默認配置。 如果您有3個支付服務實例,而其中3個實例處於關閉狀態,則將斷開用於支付服務的斷路器(因為默認的失敗開門閾值為50%)。 這意味着從Zuul到您的付款服務(包括您的一個正常實例)的所有流量都將被阻止。
您想要的-從路由列表中刪除不正常的實例-是Ribbon的角色。 功能區定義了許多接口來定義其行為,例如IRule,IPing。 其中一些具有所需的能力。
通過將功能區更改為<ServiceName>: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.AvailabilityFilteringRule
,可以使用功能區實現<ServiceName>: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.AvailabilityFilteringRule
https://github.com/Netflix/ribbon/wiki/Working-with-load-balancers
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.