Zuul的负载均衡ribbon和熔断hystrix
在zuul的配置文件中配置
server:
port: 10010
spring:
application:
name: zuul
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
zuul:
routes:
user-service:
path: /user/**
serviceId: user-service
strip-prefix: false
ignored-services:
- consumer-service
zuul:
retryable: true
ribbon:
ConnectTimeout: 250 # 连接超时时间(ms)
ReadTimeout: 2000 # 通信超时时间(ms)
OkToRetryOnAllOperations: true # 是否对所有操作重试
MaxAutoRetriesNextServer: 2 # 同一服务不同实例的重试次数
MaxAutoRetries: 1 # 同一实例的重试次数
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMillisecond: 6000 # 熔断超时时长:6000ms
由于ribbon一次访问失败后会自动重试一次,因此 ( ConnectTimeout + ReadTimeout ) × 2 < timeoutInMillisecond
即:
timeoutInMillisecond的真实值是: ( ConnectTimeout + ReadTimeout ) × 2
公式:
timeoutInMillisecond = ( ribbon ConnectTimeout + ribbon ReadTimeout ) * (maxAutoRetries + 1) * ( maxAutoRetriesNextServer + 1 );