Понимание порога самосохранения и обновления Spring Cloud Eureka Server

Я новичок в разработке микросервисов, хотя некоторое время изучал их, читая как документы Spring, так и документы Netflix.

Я начал простой проектдоступно на Github, В основном это сервер Eureka (Archimedes) и три клиентских микросервиса Eureka (один публичный API и два частных). Проверьте readme GitHub для подробного описания.

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

I нашел этот вопрос на Stackoverflowи решение проходит с помощьюenableSelfPreservation:false в конфигурации сервера Eureka. Делая это через некоторое время, убитый сервис исчезает, как и ожидалось.

Однако я вижу следующее сообщение:

РЕЖИМ САМОРЕГУЛИРОВАНИЯ ОТКЛЮЧЕН. ЭТО МОЖЕТ НЕ ЗАЩИЩАТЬ СРОК ГОДНОСТИ В СЛУЧАЕ СЕТИ / ДРУГИХ ПРОБЛЕМ.

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

Кроме того, если включено самосохранение, в консоли Eureka Server может появиться сообщение с предупреждением:

ЧРЕЗВЫЧАЙНАЯ СИТУАЦИЯ! EUREKA МОЖЕТ БЫТЬ НЕПРАВИЛЬНО ПРЕТЕНЗУЮЩИМ МОМЕНТАМИ, КОГДА ОНИ НЕТ ОБНОВЛЕНИЯ МЕНЬШЕ, ЧЕМ ПРЕДПОЛАГАЕТСЯ, И ПОЧЕМУ МОМЕНТЫ НЕ БЫЛИ СРОЧНЫ, ПРОСТО БЕЗОПАСНЫ.

Теперь перейдем к Spring Eureka Console.

Lease expiration enabled    true/false
Renews threshold    5
Renews (last min)   4

Я столкнулся со странным поведением количества порогов: когда я запускаю только сервер Eureka, порог равен 1.

2. У меня один сервер Eureka, и он настроен наregisterWithEureka: false чтобы предотвратить его регистрацию на другом сервере. Тогда, почему это появляется в пороговом количестве?

3. Для каждого клиента я начинаю увеличивать пороговое значение на +2. Я думаю, это потому, что они отправляют 2 сообщения в минуту, я прав?

4. Сервер Eureka никогда не отправляет обновление, поэтому последние обновления всегда ниже порогового значения. Это нормально?

renew threshold 5
rewnews last min: (client1) +2 + (client2) +2 -> 4

Сервер cfg:

server:
  port: ${PORT:8761}

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

Клиент 1 cfg:

spring:
  application:
    name: random-image-microservice

server:
  port: 9999

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
    healthcheck:
      enabled: true

Ответы на вопрос(2)

Ваш ответ на вопрос