Microservices 使用Ribbon和Hystrix自定义重试行为 客观的
我的任务是编写API网关和负载平衡器,目标如下:Microservices 使用Ribbon和Hystrix自定义重试行为 客观的,microservices,netflix-zuul,spring-cloud-netflix,hystrix,netflix-ribbon,Microservices,Netflix Zuul,Spring Cloud Netflix,Hystrix,Netflix Ribbon,我的任务是编写API网关和负载平衡器,目标如下: 网关/LB应将请求重定向到第三方服务实例(无代码更改=客户端服务发现) 每个服务实例只能同时处理单个响应,并发请求=即时错误响应 服务响应延迟为0-5秒。我无法缓存他们的响应,因此据我所知,回退不是我的选择。此外,超时也不是一个选项,因为延迟是随机的,并且您不能保证在另一个实例上会得到更好的延迟 我的解决方案 Spring Boot Cloud Netflix:Zuul Hystrix Ribbon。两种方法: 重试。功能区以固定间隔或指数增
- 网关/LB应将请求重定向到第三方服务实例(无代码更改=客户端服务发现)
- 每个服务实例只能同时处理单个响应,并发请求=即时错误响应
- 服务响应延迟为0-5秒。我无法缓存他们的响应,因此据我所知,回退不是我的选择。此外,超时也不是一个选项,因为延迟是随机的,并且您不能保证在另一个实例上会得到更好的延迟
MaxAutometriesNextServer:1000
,Ribbon立即触发重试并向流服务发送垃圾邮件ribbon:
eureka:
enabled: false
# Obsolete option (Apache HttpClient by default), but without this Ribbon doesn't retry against another instances
restclient:
enabled: true
hystrix:
command:
my-service:
circuitBreaker:
sleepWindowInMilliseconds: 3000
errorThresholdPercentage: 50
requestVolumeThreshold: 5
execution:
isolation:
thread:
timeoutInMilliseconds: 5500
my-service:
ribbon:
OkToRetryOnAllOperations: false
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule
listOfServers: ${LIST_OF_SERVERS}
ConnectTimeout: 500
ReadTimeout: 4500
MaxAutoRetries: 0
MaxAutoRetriesNextServer: 1000
retryableStatusCodes: 404,502,503,504