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




Я полагаю, вы имеете в виду режим самосохранения Эврики.
What is the purpose of this?
Режим самосохранения предназначен для обработки кратковременных сбоев сети. После регистрации экземпляра сервер Eureka не будет хранить его в реестре вечно. Он устанавливает политику продления аренды с экземпляром, когда экземпляры регистрируются в первый раз. Эта политика включает в себя количество тактовых импульсов, которое может пропустить экземпляр, прежде чем он будет удален из реестра.
Режим самосохранения важен, когда вы запуск нескольких серверов Eureka.
Вы можете пройти через вопрос это SO для получения более подробной информации о режиме самосохранения.
And is there any way around it?
По умолчанию он включен. Его можно отключить.
Вы также можете настроить несколько свойств, чтобы исключить мертвые экземпляры как можно скорее.
Пожалуйста, пройдите через SO-вопрос, указанный выше, чтобы узнать, какие свойства нужно настроить.
Как вы знаете, Netflix запускает огромное количество экземпляров серверов на основе Eureka. Таким образом, накладные расходы на поиск экземпляров через Eureka могут быть большими накладными расходами для Netflix. Я предполагаю, что именно поэтому у Eureka есть кеши, интервалы опроса и другие функции, которые вызывают задержку обновления статуса экземпляра.
К счастью, вы можете настроить эту задержку с помощью следующих свойств.
Эврика Сервер - eureka.server.responseCacheUpdateInvervalMs
Клиент Eureka (вызывающий API) - eureka.client.registryFetchIntervalSeconds
Клиент Eureka (поставщик API)eureka.instance.leaseExpirationDurationInSeconds
Если количество запущенных вами экземпляров невелико, обычно можно уменьшить указанные выше свойства.
Есть еще одно свойство, связанное с этой задержкой.
eureka.instance.leaseRenewalIntervalInSecondsЭто свойство устанавливает интервал подтверждения для клиента Eureka. По умолчанию это 30 секунд, но вы не можете изменить это значение, потому что на сервере Eureka есть жестко запрограммированная логика, предполагающая, что этот период составляет 30 секунд.