2016-06-18 3 views
3

Я использую Eureka как мое обнаружение службы и как балансировщик нагрузки, и он отлично работает при наличии двух экземпляров службы «A», однако, когда я останавливаю один из этих экземпляров, Eureka не признает, что один из экземпляров вниз, и он заставляет меня показывать страницу с ошибкой каждый раз, когда балансировщик нагрузки пытается использовать мертвый экземпляр.Как выполнить переход с Netflix/Eureka?

Я поставил enableSelfPreservation в false, чтобы предотвратить это, но он принимает Эврика до 3 - 5 минут, чтобы отменить эту услугу, однако я хочу высокую доступность над моей службой, и я хочу, чтобы немедленно выполнить переход на другой ресурс в считанных секундах , Возможно ли это использовать Эврика, если не так, как я могу достичь использования только живых случаев, когда другие мертвы.

Я использую весенний ботинок, вот моя конфигурация для сервера Eureka.

server: 
    port: 8761 

eureka: 
    instance: 
    hostname: localhost 
    client: 
    registerWithEureka: false 
    fetchRegistry: false 
    serviceUrl: 
     defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ 
    server: 
    enableSelfPreservation: false 

ответ

0

Вы должны добавить конфигурацию ленты в свой application.yml. Также рекомендуется установить уровень изоляции гистерезис для THREAD с установленным тайм-аутом.

Примечание: эта конфигурация должна быть в стороне (обычно это означает ваш сервер шлюза), поскольку лента (и Spring Cloud в целом) является формой балансировки нагрузки на стороне клиента.

Вот пример, который я использую:

hystrix: 
    command: 
    default: 
     execution: 
     isolation: 
      strategy: THREAD 
      thread: 
      timeoutInMilliseconds: 40000 #Timeout after this time in milliseconds 

ribbon: 
    ConnectTimeout: 5000 #try to connect to the endpoint for 5 seconds. 
    ReadTimeout: 5000 #try to get a response after successfull connection for 5 seconds 
    # Max number of retries on the same server (excluding the first try) 
    maxAutoRetries: 1 
    # Max number of next servers to retry (excluding the first server) 
    MaxAutoRetriesNextServer: 2