Вопрос с собеседования · Spring

Зачем нужен service discovery в системе из многих сервисов?

JuniorSpring Cloud
Ещё спрашивают так:
  • Зачем сервисам реестр?
Коротко

Сервисы обращаются друг к другу по логическому имени, а не по жёстким адресам, которые меняются при каждом развёртывании и масштабировании.

  • Экземпляры регистрируются в реестре и шлют heartbeat
  • Eureka, Consul — или встроенный discovery Kubernetes (Service и DNS)
  • Вместе с discovery — клиентская или серверная балансировка

А ещё В Kubernetes отдельный реестр обычно не нужен

Подробно

В динамической среде экземпляры появляются и исчезают постоянно: автоскейл добавил под, выкатка заменила старый, узел упал. Прописать адреса в конфигурации невозможно — они устареют к следующему релизу. Реестр хранит актуальный список работающих экземпляров, а клиент запрашивает адрес по имени сервиса и заодно получает возможность балансировать нагрузку между экземплярами. Хранение настроек и ограничение частоты запросов — задачи других компонентов.

Что хотят услышать

  • Зачем нужен discovery.

Частые ошибки

  • Прописывать адреса экземпляров в конфигурации.
  • Путать реестр сервисов с сервером конфигурации.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗Чтобы шифровать весь трафик между сервисами без настройки сертификатов
  • ✗Чтобы хранить общую конфигурацию всех сервисов в одном месте и раздавать её
  • ✓Чтобы сервисы находили друг друга по имени, а не по адресам
  • ✗Чтобы ограничивать частоту запросов между сервисами и защищать их от перегрузки

Что спросят дальше

  • Как экземпляр исключается из реестра при отказе?
  • Чем шлюз отличается от реестра сервисов?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования