我在按照我想要的方式开始使用Netflix Ribbon时遇到了一个问题。
我有2个Spring Boot应用程序和一个由Ribbon使用的Eureka服务注册表。
App1 正在对 App2 执行简单的GET请求。
在第二个应用程序上调用localhost:port/specificString
时,将抛出异常。对于其他请求(/String
),将返回正常结果。
我启动了App2的多个实例,我从App1的@LoadBalanced
方法调用了一个。
问题是我希望Load Balancer只能调用" healty"实例,以便其他经常失败的人不被召唤。
问题是Load Balancer继续调用RoundRobin,尽管我为App1设置了以下属性:
ribbon.NFLoadBalancerRuleClassName = com.netflix.loadbalancer.AvailabilityFilteringRule
除此之外,我没有更改默认设置,因此如果我正确理解文档,客户端应该跳过连续失败超过3次30秒的实例。在我的情况下,这并没有发生,客户端遵循简单的RoundRobin,尽管我使每个第n个服务器实例都失败了。
我有什么遗失的吗?我是否误解了这条规则的运作方式?