Понимание клиентского кэша Eureka

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
3 267
2

Ответы 2

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

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

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

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

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

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

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

  • eureka.instance.leaseRenewalIntervalInSeconds

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

Другие вопросы по теме