Понимание клиентского кэша Eureka - PullRequest
0 голосов
/ 10 мая 2018

Мне нужна помощь в понимании того, почему службы, зарегистрированные в Eureka, хотят общаться друг с другом, несмотря на то, что они на самом деле не работают. Например, у меня есть сервис A и сервис B, зарегистрированные в Eureka. Если я отключу службу B, служба A будет по-прежнему пытаться связаться со службой B в течение 30–3 минут, даже если она не работает. Какова цель этого? И есть ли способ обойти это? Спасибо!

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

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

К счастью, вы можете настроить эту задержку с помощью следующих свойств.

  • Eureka Server - eureka.server.responseCacheUpdateInvervalMs

    • 30 секунд. API сервера Eureka имеют собственный кэш для ответа. По умолчанию это довольно большой период. Вы можете уменьшить это значение.
  • Клиент Eureka (API Caller) - eureka.client.registryFetchIntervalSeconds

    • 30 секунд. Клиент Eureka периодически получает статус экземпляров с сервера Eureka. Вы можете уменьшить это значение.
  • Eureka Client (поставщик API) eureka.instance.leaseExpirationDurationInSeconds

    • 90 секунд. Каждый экземпляр, который регистрируется на сервере Eureka, может сам устанавливать срок действия. У сервера Eureka истекает срок действия экземпляра, если он не получает пульса от клиента Eureka в этот период По умолчанию каждый клиент Eureka посылает сердцебиение каждые 30 секунд.

Если количество запущенных вами экземпляров не так велико, обычно вы можете уменьшить вышеуказанные свойства.

Существует еще одно свойство, связанное с этой задержкой.

  • eureka.instance.leaseRenewalIntervalInSeconds

Это свойство устанавливает интервал сердцебиения для клиента Eureka. Его значение по умолчанию составляет 30 секунд, но вы не можете изменить это значение, поскольку сервер Eureka имеет некоторую жестко закодированную логику, которая предполагает, что этот период составляет 30 секунд.

0 голосов
/ 18 мая 2018

Я полагаю, вы имеете в виду режим самосохранения Эврики.

Какова цель этого?

Режим самосохранения предназначен для кратковременных сбоев сети. Как только экземпляр зарегистрирован, сервер Eureka не будет хранить экземпляр в реестре вечно. Он устанавливает политику продления аренды для экземпляра, когда экземпляры регистрируются впервые. В этой политике указывается, сколько тактовых импульсов может пропустить экземпляр, прежде чем он будет удален из реестра.

Режим самосохранения важен, когда вы используете несколько серверов Eureka .

Вы можете просмотреть этот ТАК вопрос, чтобы узнать больше о режиме самосохранения.

И есть ли способ обойти это?

Включено по умолчанию. Это можно отключить.

Вы также можете настроить несколько свойств, чтобы убедиться, что мертвые экземпляры выселены как можно скорее .

Пожалуйста, просмотрите SO вопрос, связанный выше, чтобы узнать, какие свойства нужно настроить.

...